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.
Available components
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 191 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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.
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
claude mcp add fastslack-e2e-runner -- docker run --rm -i docker.io/fastslack/e2e-runner-mcp:1.3.0
{
"mcpServers": {
"fastslack-e2e-runner": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/fastslack/e2e-runner-mcp:1.3.0"
]
}
}
} {
"servers": {
"fastslack-e2e-runner": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/fastslack/e2e-runner-mcp:1.3.0"
]
}
}
} codex mcp add fastslack-e2e-runner -- docker run --rm -i docker.io/fastslack/e2e-runner-mcp:1.3.0
{
"$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
}
}
} mcp_servers:
fastslack-e2e-runner:
command: "docker"
args: ["run", "--rm", "-i", "docker.io/fastslack/e2e-runner-mcp:1.3.0"] {
"McpServers": {
"fastslack-e2e-runner": {
"Transport": "stdio",
"Command": "docker",
"Arguments": [
"run",
"--rm",
"-i",
"docker.io/fastslack/e2e-runner-mcp:1.3.0"
]
}
}
} {
"mcpServers": {
"fastslack-e2e-runner": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/fastslack/e2e-runner-mcp:1.3.0"
]
}
}
} 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
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 →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| authStorageKey | string | – | localStorage key name for the auth token (default: "accessToken") |
| authToken | string | – | JWT or auth token to inject into localStorage before navigating (for authenticated pages) |
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| delay | number | – | Wait N milliseconds after page load before analyzing (default: 0) |
| includeScreenshot | boolean | – | Include a screenshot alongside the JSON analysis (default: true) |
| maxElements | number | – | Max elements per category (default: 50). Lower values produce smaller responses. |
| scope | string | – | CSS selector to limit analysis to a section (e.g. "#sidebar", ".modal-content") |
| selector | string | – | Wait for this CSS selector before analyzing |
| url | string | yes | Full URL to analyze (e.g. "https://example.com" or "http://host.docker.internal:3000/dashboard") |
| waitUntil | string | – | Navigation 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.
| Name | Type | Req | Description |
|---|---|---|---|
| authStorageKey | string | – | localStorage key name for the auth token (default: "accessToken") |
| authToken | string | – | JWT or auth token to inject into localStorage before navigating (for authenticated pages) |
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| delay | number | – | Wait N milliseconds after page load before capturing (default: 0) |
| filename | string | – | Output filename (default: capture-<timestamp>.png) |
| fullPage | boolean | – | Capture full scrollable page (default: false) |
| selector | string | – | Wait for this CSS selector before capturing |
| url | string | yes | Full URL to capture (e.g. "https://example.com" or "http://host.docker.internal:3000/dashboard") |
| waitUntil | string | – | Navigation 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Sequential actions with {{param}} placeholders for substitution |
| cwd | string | – | Absolute path to the project root directory. |
| description | string | – | Human-readable description of what this module does |
| name | string | yes | Module name (used in $use references, e.g. "auth-jwt", "navigate-patient") |
| params | object | – | Parameter 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: "…
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| hooks | object | – | Optional 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. |
| name | string | yes | Suite file name without .json extension (e.g. "login-flow", "issue-1743-sidebar") |
| tests | array | yes | Array 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| port | number | – | Dashboard 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| port | number | – | Dashboard 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).
| Name | Type | Req | Description |
|---|---|---|---|
| authStorageKey | string | – | localStorage key name for the auth token (default: "accessToken") |
| authToken | string | – | JWT or auth token to inject into localStorage before running tests (for authenticated apps) |
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| mode | string | – | prompt = return issue + prompt for Claude Code to create tests (default). verify = auto-generate tests via Claude API and run them. |
| testType | string | – | Test category: 'e2e' (default) for UI-driven tests, 'api' for backend API tests |
| url | string | yes | Issue 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| days | number | – | Analysis window in days (default: 30) |
| query | string | yes | What 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | – | Absolute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Container lifecycle action |
| cwd | string | – | Absolute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| errorsOnly | boolean | – | Only return requests with status >= 400 |
| includeBodies | boolean | – | Include request/response bodies (default: false, implies includeHeaders) |
| includeHeaders | boolean | – | Include request/response headers (default: false) |
| method | string | – | Filter by HTTP method (GET, POST, etc.) |
| runDbId | number | yes | The run database ID (returned by e2e_run in the summary) |
| statusMax | number | – | Maximum HTTP status code |
| statusMin | number | – | Minimum HTTP status code (e.g. 400 for errors only) |
| testName | string | – | Filter by test name |
| urlPattern | string | – | Regex 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cwd | string | – | Absolute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | Run all test suites from the tests directory |
| baseUrl | string | – | Override the base URL for this run |
| concurrency | number | – | Number of parallel workers (default from config) |
| cwd | string | – | Absolute path to the project root directory. Claude Code should pass its current working directory. |
| failOnNetworkError | boolean | – | Fail tests when network requests fail (e.g. ERR_CONNECTION_REFUSED). Default: false. |
| file | string | – | Absolute or relative path to a JSON test file |
| retries | number | – | Number of retries for failed tests |
| suite | string | – | Suite name to run (e.g. "auth", "01-login"). Matches with or without numeric prefix. |
| verificationStrictness | string | – | Visual 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.
| Name | Type | Req | Description |
|---|---|---|---|
| hash | string | yes | Screenshot 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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to perform: set (upsert), get (one key), list (all), delete |
| cwd | string | – | Absolute path to the project root directory. |
| key | string | – | Variable name (required for set, get, delete) |
| scope | string | – | Scope: "project" (default) or a suite name for suite-specific override |
| value | string | – | Variable value (required for set) |
No output schema declared.
No examples provided.
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.