Scout
OCI · GHCR.IO/FELIXGEELHAAR/SCOUT:1.10.0 · SCANNED AUG 3
Browser automation MCP server with 84 tools. Pure CDP, DOM diffing, vision hybrid.
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 →
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 & Transparency19
- Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 70 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability71
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 5478 tokens (~65/item across 84 items; 84 tools + 0 resources), lean.Pass
- 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 Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
- Structured output schemas are declared (7% of tools); any adoption earns full credit.Pass
Capabilities20
- Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
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.
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 · ghcr.io/felixgeelhaar/scout:1.10.0
claude mcp add felixgeelhaar-scout -- docker run --rm -i ghcr.io/felixgeelhaar/scout:1.10.0
codex mcp add felixgeelhaar-scout -- docker run --rm -i ghcr.io/felixgeelhaar/scout:1.10.0
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"felixgeelhaar-scout": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"ghcr.io/felixgeelhaar/scout:1.10.0"
],
"enabled": true
}
}
} mcp_servers:
felixgeelhaar-scout:
command: "docker"
args: ["run", "--rm", "-i", "ghcr.io/felixgeelhaar/scout:1.10.0"] {
"mcpServers": {
"felixgeelhaar-scout": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/felixgeelhaar/scout:1.10.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.
- 2 Aug 26 +2
- Stability: unverified → 0.20 ▲ functional
- 1 Aug 26 −8
- 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 +33
- Tool coverage: unverified → 100 ▲ functional
- First check of Tool coverage: 94 functional
- First check of Tool coverage: 7 functional
- First check of Schema quality: good functional
- First check of Schema quality: pass functional
- First check of Schema quality: fail functional
- 26 Jul 26 5
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
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/ghcr.io/felixgeelhaar/scout:1.10.0
Provenance none
Ecosystem: oci · Outcome: none
Reason: no_attestation
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.
open_tab ~55
Open a new named browser tab and navigate to a URL. The new tab becomes active.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | — | Tab name (for open_tab and switch_tab) |
| url | string | — | URL to open in new tab |
No output schema declared.
No examples provided.
pdf ~15
Generate a PDF of the current page.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
readable_text ~35
Extract just the main readable content, stripping navigation and boilerplate.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
replay_playbook ~45
Replay a saved playbook deterministically without LLM calls. Returns success/failure and any extracted data.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | File path to the playbook JSON file |
No output schema declared.
No examples provided.
reset ~24
Force-reset the current browser session, clearing stuck state and creating a fresh page context.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
right_click ~46
Right-click an element to trigger context menus.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of element to click |
| wait | boolean | — | If true wait for full page navigation after click |
No output schema declared.
No examples provided.
save_playbook ~38
Save the last recorded playbook to a JSON file for deterministic replay.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | File path to save the playbook JSON |
No output schema declared.
No examples provided.
screenshot ~166
Capture a screenshot. Defaults: JPEG quality 60, max_width 1024, 80KB cap (~20k tokens base64) so result fits MCP tool-result token limits. Pass quality / max_width to override; on overflow the image is progressively downscaled rather than failing. Returns base64 data URL.
| Name | Type | Req | Description |
|---|---|---|---|
| full_page | boolean | — | Capture the entire scrollable page instead of just the viewport. |
| max_width | integer | — | Maximum image width in pixels. Downscales proportionally. Good values: 800 or 1024. |
| quality | integer | — | JPEG quality 1-100. Forces JPEG format. Lower = smaller file. Default auto-compresses to fit 200KB. |
| url | string | — | Optional URL to navigate to before taking screenshot |
No output schema declared.
No examples provided.
scroll_and_collect ~55
Auto-scroll the page and collect items as they lazy-load. For infinite scroll pages.
| Name | Type | Req | Description |
|---|---|---|---|
| max_items | integer | — | Maximum items to collect (default 100) |
| selector | string | yes | CSS selector for the repeating items |
No output schema declared.
No examples provided.
scroll_by ~49
Scroll the page by pixel offset. Positive y = scroll down.
| Name | Type | Req | Description |
|---|---|---|---|
| x | integer | — | Horizontal scroll offset in pixels |
| y | integer | yes | Vertical scroll offset in pixels (positive=down) |
No output schema declared.
No examples provided.
scroll_to ~31
Scroll to bring an element into view.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of element to scroll into view |
No output schema declared.
No examples provided.
select_by_prompt ~67
Find an element using natural language (e.g. 'the login button', 'search input'). Returns the best match with confidence score and CSS selector.
| Name | Type | Req | Description |
|---|---|---|---|
| prompt | string | yes | Natural language description of the element to find (e.g. 'the login button' or 'search input') |
No output schema declared.
No examples provided.
select_option ~48
Select an option from a dropdown/select element by visible text or value.
| Name | Type | Req | Description |
|---|---|---|---|
| option | string | yes | Option text or value to select |
| selector | string | yes | CSS selector of the select element |
No output schema declared.
No examples provided.
session_history ~45
Get the last N actions performed in this session. Provides context about what has been done so far.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | Number of recent actions to return (default 5 |
No output schema declared.
No examples provided.
start_recording ~41
Start recording browser actions into a replayable playbook. Call stop_recording when done.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name for the playbook being recorded |
No output schema declared.
No examples provided.
start_screen_recording ~175
Start capturing the active page as a screencast video. Frames are streamed via CDP and (if ffmpeg is in PATH) encoded to webm/mp4 on stop. Otherwise raw JPEG frames + ffmpeg concat list are returned for offline encoding. Call stop_screen_recording to finish.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | — | Output format: webm (default if ffmpeg present) |
| fps | integer | — | Target frames per second 1-60 (default 30) |
| height | integer | — | Capture height in CSS pixels (default 800) |
| output_dir | string | — | Parent directory for output. Defaults to OS temp dir. |
| quality | integer | — | JPEG frame quality 1-100 (default 80) |
| width | integer | — | Capture width in CSS pixels (default 1280) |
No output schema declared.
No examples provided.
start_trace ~42
Start tracing all browser actions with before/after screenshots. Call stop_trace to export a zip file.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
status ~26
Get current browser/session health status including URL, pending requests, timeout streak, and last error.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
stop_recording ~41
Stop recording and return the playbook. Save it with save_playbook for later replay.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
stop_screen_recording ~41
Stop the active screen recording. Returns a struct with the output file path (video or frames dir), format, encoder used, frame count, and duration.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
stop_trace ~40
Stop tracing and export a zip file containing trace events, screenshots, and network requests.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | File path to write the trace zip file |
No output schema declared.
No examples provided.
submit_form ~157
Submit a form using form.requestSubmit() — fires Vue @submit.prevent / React onSubmit / native @submit listeners and runs HTML5 validation. Pass the form selector or any selector inside it. If match_url is set, waits for an XHR/fetch whose URL contains that substring and returns its status code. Returns the request URL, method, status, and post-submit URL so a single tool call replaces click + sleep + check_readiness + network_requests.
| Name | Type | Req | Description |
|---|---|---|---|
| match_url | string | — | Optional URL substring. When set |
| selector | string | yes | CSS selector of the <form> element or any element inside it. |
| timeout_ms | integer | — | Hard cap to wait for response/navigation in ms. Default 8000. |
No output schema declared.
No examples provided.
submit_outcome ~64
Diagnose silent form-submit failures. Returns defaultPrevented for the latest submit, visible [role=alert] messages, aria-invalid field labels, dev-server error overlay text, XHR count since tracker install, and whether navigation committed. Auto-installs the tracker on first call.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| alerts_visible | array | — | — |
| aria_invalid_fields | array | — | — |
| current_url | string | — | — |
| default_prevented | boolean | — | — |
| framework_error_overlay | string | — | — |
| navigation_committed | boolean | — | — |
| submitted_form | string | — | — |
| tracker_installed | boolean | — | — |
| xhr_count | integer | — | — |
No examples provided.
suggest_selectors ~47
Find elements similar to a selector that failed. Returns up to 5 suggestions with selector, tag, text, and classes.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | The selector that failed to match |
No output schema declared.
No examples provided.
switch_tab ~51
Switch to a named tab. Use list_tabs to see available tabs.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | — | Tab name (for open_tab and switch_tab) |
| url | string | — | URL to open in new tab |
No output schema declared.
No examples provided.
switch_to_frame ~47
Switch execution context into an iframe. Subsequent actions operate inside the iframe until switch_to_main_frame is called.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of the iframe element to switch into |
No output schema declared.
No examples provided.
switch_to_main_frame ~37
Switch back to the main page frame after operating inside an iframe.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
type ~44
Type text into an input element. Clears existing value first.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of input element |
| text | string | yes | Text to type into the element |
No output schema declared.
No examples provided.
upload_file ~46
Upload a file to a file input element.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the file to upload |
| selector | string | yes | CSS selector of the file input element |
No output schema declared.
No examples provided.
wait_for ~30
Wait for an element to appear in the DOM.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector to wait for |
No output schema declared.
No examples provided.
wait_for_navigation ~144
Wait for the page to navigate. mode: 'full' (real document load) | 'spa' (History API push/replace/popstate) | 'any' (default, first to fire). Use when an external action — a button outside scout's control, a JS-triggered route change — moves the page; click(wait=true) covers the case where scout is the one triggering.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | — | One of full|spa|any. full = real document load. spa = History API push/replace/popstate. any = first to fire. Default any. |
| timeout_ms | integer | — | Maximum wait in milliseconds. Default 5000. |
| Name | Type | Req | Description |
|---|---|---|---|
| elapsed_ms | integer | — | — |
| full_navigation | boolean | — | — |
| idle_after_change | boolean | — | — |
| mode | string | — | — |
| spa_navigation | boolean | — | — |
| timed_out | boolean | — | — |
| title | string | — | — |
| url | string | — | — |
| url_changed | boolean | — | — |
No examples provided.
wait_for_spa_idle ~132
Stronger SPA wait than wait_spa: blocks until document complete, framework hydration events fired (Astro 'astro:page-load' / 'astro:end', Vue/React mount markers populated), no pending XHR/fetch, no visible spinners/skeletons, and the DOM has been mutation-free for quiet_ms. Use after a click that triggers route change or hydration when check_readiness returns 100 too eagerly.
| Name | Type | Req | Description |
|---|---|---|---|
| quiet_ms | integer | — | Required mutation-free quiet window in ms. Default 400. |
| timeout_ms | integer | — | Hard cap in ms. Default 15000. |
No output schema declared.
No examples provided.
wait_spa ~43
Wait for SPA framework (React/Vue/Angular/Next.js/Svelte) to finish rendering.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
web_vitals ~66
Extract Core Web Vitals (LCP, CLS, INP) and performance timing (TTFB, First Paint, DOM Content Loaded). Each metric is rated good/needs-improvement/poor per Google thresholds.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.