Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.fastslack/e2e-runner

OCI · DOCKER.IO/FASTSLACK/E2E-RUNNER-MCP:1.3.0 · 2 COMPONENTS · SCANNED SEP 20

JSON-driven E2E test runner with parallel Chrome pool execution and 16 MCP tools.

0 this week 50 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • Malware scan not yet available for this package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency32
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3483 tokens (~217/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the io.github.fastslack/e2e-runner MCP server?

io.github.fastslack/e2e-runner runs locally as a container image, launched with docker run --rm -i docker.io/fastslack/e2e-runner-mcp:1.3.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

oci · docker.io/fastslack/e2e-runner-mcp:1.3.0

# add to Claude Code
claude mcp add fastslack-e2e-runner -- docker run --rm -i docker.io/fastslack/e2e-runner-mcp:1.3.0
// .cursor/mcp.json
{
  "mcpServers": {
    "fastslack-e2e-runner": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "docker.io/fastslack/e2e-runner-mcp:1.3.0"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "fastslack-e2e-runner": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "docker.io/fastslack/e2e-runner-mcp:1.3.0"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add fastslack-e2e-runner -- docker run --rm -i docker.io/fastslack/e2e-runner-mcp:1.3.0
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "fastslack-e2e-runner": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "docker.io/fastslack/e2e-runner-mcp:1.3.0"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  fastslack-e2e-runner:
    command: "docker"
    args: ["run", "--rm", "-i", "docker.io/fastslack/e2e-runner-mcp:1.3.0"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "fastslack-e2e-runner": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "docker.io/fastslack/e2e-runner-mcp:1.3.0"
      ]
    }
  }
}
// mcp.json
{
  "mcpServers": {
    "fastslack-e2e-runner": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "docker.io/fastslack/e2e-runner-mcp:1.3.0"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 15 Sept 26 +1
    • Stability: 0.97 → pass security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 −3
    • Stability: pass → 0.83 functional
  • 9 Sept 26 +1
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed oci/docker.io/fastslack/e2e-runner-mcp:1.3.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem oci
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 16 exposed · ~3,483 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
e2e_analyze ~324

Analyze a page's structure and return all interactive elements (forms, buttons, links, navigation, tables, modals, etc.) with their CSS selectors, plus suggested test scaffolds. One call replaces the entire screenshot→guess-selectors→retry cycle.

NameTypeReqDescription
authStorageKeystringlocalStorage key name for the auth token (default: "accessToken")
authTokenstringJWT or auth token to inject into localStorage before navigating (for authenticated pages)
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
delaynumberWait N milliseconds after page load before analyzing (default: 0)
includeScreenshotbooleanInclude a screenshot alongside the JSON analysis (default: true)
maxElementsnumberMax elements per category (default: 50). Lower values produce smaller responses.
scopestringCSS selector to limit analysis to a section (e.g. "#sidebar", ".modal-content")
selectorstringWait for this CSS selector before analyzing
urlstringyesFull URL to analyze (e.g. "https://example.com" or "http://host.docker.internal:3000/dashboard")
waitUntilstringNavigation wait strategy. "auto" (default) tries networkidle2 first with a short timeout, then falls back to domcontentloaded + delay for SPA/WebSocket apps. Use "domcontentloaded" for apps with pers…

No output schema declared.

No examples provided.

e2e_capture ~276

Capture a screenshot of any URL on demand. Connects to the Chrome pool, navigates to the URL, takes a screenshot, and returns the image with its ss:HASH.

NameTypeReqDescription
authStorageKeystringlocalStorage key name for the auth token (default: "accessToken")
authTokenstringJWT or auth token to inject into localStorage before navigating (for authenticated pages)
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
delaynumberWait N milliseconds after page load before capturing (default: 0)
filenamestringOutput filename (default: capture-<timestamp>.png)
fullPagebooleanCapture full scrollable page (default: false)
selectorstringWait for this CSS selector before capturing
urlstringyesFull URL to capture (e.g. "https://example.com" or "http://host.docker.internal:3000/dashboard")
waitUntilstringNavigation wait strategy. "auto" (default) tries networkidle2 first with a short timeout, then falls back to domcontentloaded + delay for SPA/WebSocket apps. Use "domcontentloaded" for apps with pers…

No output schema declared.

No examples provided.

e2e_create_module ~217

Create a reusable module for E2E tests. Modules encapsulate repeated action sequences referenced via { "$use": "module-name", "params": {...} }. Good module candidates: auth setup, page navigation, tab clicking, opening sidebars/drawers, form fill sequences, cleanup routines. Modules can compose — a module can $use other modules. Params use {{paramName}} mustache syntax in action fields. Extract a module when you see the same 2+ action sequence in multiple tests.

NameTypeReqDescription
actionsarrayyesSequential actions with {{param}} placeholders for substitution
cwdstringAbsolute path to the project root directory.
descriptionstringHuman-readable description of what this module does
namestringyesModule name (used in $use references, e.g. "auth-jwt", "navigate-patient")
paramsobjectParameter definitions. Each key is a param name, value is { required: boolean, default?: string, description?: string }

No output schema declared.

No examples provided.

e2e_create_test ~1,266

Create a new E2E test JSON file. IMPORTANT: prefer built-in actions over evaluate blocks. ## Action selection guide (use instead of evaluate) **Clicking elements by text** — DON'T write evaluate to find+click elements: click: { type: "click", text: "Submit" } — searches button, a, [role=tab], span, etc. click_regex: { type: "click_regex", text: "save|guardar" } — regex match, case-insensitive click_menu_item: { type: "click_menu_item", text: "Delete" } — [role=menuitem], .MenuItem, etc. click_option: { type: "click_option", text: "Option A" } — [role=option] in dropdowns click_chip: { type: "click_chip", text: "Active" } — MUI Chip / tag elements click_icon: { type: "click_icon", value: "edit" } — SVG/icon by data-testid, aria-label, class click_in_context:{ type: "click_in_context", text: "Row text", selector: "button" } — child within container **Asserting text presence/absence** — DON'T write evaluate with body.includes(): assert_text: { type: "assert_text", text: "Welcome" } — text IS on page (case-sensitive). Uses: text assert_no_text: { type: "assert_no_text", text: "Error" } — text is NOT on page. Uses: text assert_text_in: { type: "assert_text_in", selector: "[class*='Drawer']", text: "profesional|doctor" } — scoped regex in container (case-insensitive default). Uses: selector + text (+ value:"exact") **Asserting elements** — DON'T write evaluate to count or check visibility: assert_visible: { type: "assert_visible", selector: ".modal" } — Uses: selector (NOT text) assert_not_visible: { type: "assert_not_visible", selector: ".loader" } — Uses: selector (NOT text) assert_count: { type: "assert_count", selector: "input", value: ">= 2" } — Uses: selector + value assert_element_text: { type: "assert_element_text", selector: "h1", text: "Dashboard" } — Uses: selector + text assert_matches: { type: "…

NameTypeReqDescription
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
hooksobjectOptional hooks: beforeAll, afterAll, beforeEach, afterEach (each an array of actions). Note: beforeAll runs on a SEPARATE page that is closed before tests — use beforeEach for auth/setup.
namestringyesSuite file name without .json extension (e.g. "login-flow", "issue-1743-sidebar")
testsarrayyesArray of test objects with { name, actions, expect }

No output schema declared.

No examples provided.

e2e_dashboard_restart ~93

Restart the E2E Runner web dashboard. Stops the current instance and starts a new one, optionally with a new cwd or port. Useful when switching projects or when the dashboard was started from another session.

NameTypeReqDescription
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
portnumberDashboard port (default: same port or 8484)

No output schema declared.

No examples provided.

e2e_dashboard_start ~77

Start the E2E Runner web dashboard. Provides a real-time UI for running tests, viewing results, screenshots, history, and pool status.

NameTypeReqDescription
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
portnumberDashboard port (default 8484)

No output schema declared.

No examples provided.

e2e_dashboard_stop ~20

Stop the E2E Runner web dashboard.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

e2e_issue ~207

Fetch a GitHub/GitLab issue and prepare E2E test generation. Returns issue details and a prompt for test creation. Use mode "verify" to auto-generate and run tests (requires ANTHROPIC_API_KEY).

NameTypeReqDescription
authStorageKeystringlocalStorage key name for the auth token (default: "accessToken")
authTokenstringJWT or auth token to inject into localStorage before running tests (for authenticated apps)
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
modestringprompt = return issue + prompt for Claude Code to create tests (default). verify = auto-generate tests via Claude API and run them.
testTypestringTest category: 'e2e' (default) for UI-driven tests, 'api' for backend API tests
urlstringyesIssue URL (GitHub or GitLab)

No output schema declared.

No examples provided.

e2e_learnings ~168

Query the E2E learning system for insights about test stability, flaky tests, selector health, page health, API health, error patterns, and trends. Builds knowledge across runs.

NameTypeReqDescription
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
daysnumberAnalysis window in days (default: 30)
querystringyesWhat to query: "summary" (full overview), "flaky" (flaky tests), "selectors" (selector stability), "pages" (page health), "apis" (API health), "errors" (error patterns), "trends" (7-day trend). Drill…

No output schema declared.

No examples provided.

e2e_list ~48

List all available E2E test suites with their test names and counts.

NameTypeReqDescription
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.

No output schema declared.

No examples provided.

e2e_neo4j ~55

Manage the Neo4j knowledge graph container for E2E learnings. Requires Docker.

NameTypeReqDescription
actionstringyesContainer lifecycle action
cwdstringAbsolute path to the project root directory.

No output schema declared.

No examples provided.

e2e_network_logs ~203

Query network request/response logs for a specific test run. Returns filtered logs from SQLite. Use the runDbId from e2e_run results to drill down into network details on demand.

NameTypeReqDescription
errorsOnlybooleanOnly return requests with status >= 400
includeBodiesbooleanInclude request/response bodies (default: false, implies includeHeaders)
includeHeadersbooleanInclude request/response headers (default: false)
methodstringFilter by HTTP method (GET, POST, etc.)
runDbIdnumberyesThe run database ID (returned by e2e_run in the summary)
statusMaxnumberMaximum HTTP status code
statusMinnumberMinimum HTTP status code (e.g. 400 for errors only)
testNamestringFilter by test name
urlPatternstringRegex pattern to match against request URLs

No output schema declared.

No examples provided.

e2e_pool_status ~59

Get the status of the Chrome pool (browserless/chrome). Shows availability, running sessions, capacity, and queued requests.

NameTypeReqDescription
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.

No output schema declared.

No examples provided.

e2e_run ~252

Run E2E browser tests. Specify "all" to run every suite, "suite" for a specific suite, or "file" for a JSON file path. Returns structured results with pass/fail status, duration, and error details.

NameTypeReqDescription
allbooleanRun all test suites from the tests directory
baseUrlstringOverride the base URL for this run
concurrencynumberNumber of parallel workers (default from config)
cwdstringAbsolute path to the project root directory. Claude Code should pass its current working directory.
failOnNetworkErrorbooleanFail tests when network requests fail (e.g. ERR_CONNECTION_REFUSED). Default: false.
filestringAbsolute or relative path to a JSON test file
retriesnumberNumber of retries for failed tests
suitestringSuite name to run (e.g. "auth", "01-login"). Matches with or without numeric prefix.
verificationStrictnessstringVisual verification strictness. strict: no ambiguity allowed, any doubt = FAIL. moderate: reasonable judgment (default). lenient: only fail on clear contradictions.

No output schema declared.

No examples provided.

e2e_screenshot ~86

Retrieve a screenshot by its hash (e.g. ss:a3f2b1c9). Returns the image. Hashes are shown in the dashboard next to screenshots.

NameTypeReqDescription
hashstringyesScreenshot hash with or without ss: prefix (e.g. "ss:a3f2b1c9" or "a3f2b1c9")

No output schema declared.

No examples provided.

e2e_vars ~132

Manage project variables stored in SQLite. Variables can be referenced in test JSON as {{var.KEY}}. Supports project-wide and per-suite scoping.

NameTypeReqDescription
actionstringyesAction to perform: set (upsert), get (one key), list (all), delete
cwdstringAbsolute path to the project root directory.
keystringVariable name (required for set, get, delete)
scopestringScope: "project" (default) or a suite name for suite-specific override
valuestringVariable value (required for set)

No output schema declared.

No examples provided.

Common questions

What is the io.github.fastslack/e2e-runner MCP server?

io.github.fastslack/e2e-runner is an MCP server listed in the public MCP registry as io.github.fastslack/e2e-runner. JSON-driven E2E test runner with parallel Chrome pool execution and 16 MCP tools. This page covers its container image (docker.io/fastslack/e2e-runner-mcp:1.3.0).

Is the io.github.fastslack/e2e-runner MCP server safe to use?

io.github.fastslack/e2e-runner scores 50 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.fastslack/e2e-runner MCP server expose?

io.github.fastslack/e2e-runner exposes 16 tools: e2e_run, e2e_list, e2e_create_test, e2e_pool_status, e2e_screenshot, and 11 more. Their descriptions and schemas cost roughly 3,483 tokens of context every time the server is loaded.

Is the io.github.fastslack/e2e-runner MCP server still maintained?

io.github.fastslack/e2e-runner is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.