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

io.github.fastslack/e2e-runner

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

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

−1 this week 37 Trust /100
Trust breakdown (6 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 →

Supply Chain Security0
  • Malware scan not yet available for this package.Unverified
  • CVE data not yet available for this package.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency-health data not yet available.Unverified
Provenance & Transparency32
Schema Quality & AI Usability63
  • 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 Management23
  • Stability observed for 7 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
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

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

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
# 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"]
// 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.

  • 2 Aug 26 +3
    • Stability: unverified → 0.20 functional
  • 31 Jul 26 −4
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Jul 26 +30
    • Tool coverage: unverified → 100 functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 100 functional
    • First check of Schema quality: fail functional
  • 26 Jul 26 8

    First indexed and scored.

    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
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 3 Aug 2026 · Analysed oci/docker.io/fastslack/e2e-runner-mcp:1.3.0

Provenance none

Ecosystem: oci · Outcome: none

Reason: no_attestation

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.

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.