Scout
OCI · GHCR.IO/KLARLABS-STUDIO/SCOUT:1.15.3 · 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 & Transparency45
- 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
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 7 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 5808 tokens (~66/item across 88 items; 88 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 (16% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a current MCP spec version (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.
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/klarlabs-studio/scout:1.15.3
claude mcp add klarlabs-studio-scout -- docker run --rm -i ghcr.io/klarlabs-studio/scout:1.15.3
codex mcp add klarlabs-studio-scout -- docker run --rm -i ghcr.io/klarlabs-studio/scout:1.15.3
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"klarlabs-studio-scout": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"ghcr.io/klarlabs-studio/scout:1.15.3"
],
"enabled": true
}
}
} mcp_servers:
klarlabs-studio-scout:
command: "docker"
args: ["run", "--rm", "-i", "ghcr.io/klarlabs-studio/scout:1.15.3"] {
"mcpServers": {
"klarlabs-studio-scout": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/klarlabs-studio/scout:1.15.3"
]
}
}
} 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.
- 3 Aug 26 +3
- Stability: unverified → 0.23 ▲ functional
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- 1 Aug 26 −5
- 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: 16 functional
- First check of Schema quality: good functional
- First check of Schema quality: pass functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 94 functional
- 26 Jul 26 11
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/klarlabs-studio/scout:1.15.3
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.
accessibility_tree ~32
Get a compact accessibility tree showing all interactive elements.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
annotated_screenshot ~136
Label all interactive elements with numbers and return their selectors/info. By default returns only the element list (compact). Set include_image=true to also get the screenshot with labels drawn on it. NOTE: label numbers are per-call only — after any DOM mutation (re-render, modal open, route change), the same label may point to a different element. Pair click_label with the most recent annotated_screenshot in the same turn; for stable identity across mutations use the returned selector.
| Name | Type | Req | Description |
|---|---|---|---|
| include_image | boolean | — | Include base64 image data in response. Default false to avoid large responses. Use screenshot tool separately if you need the image. |
No output schema declared.
No examples provided.
app_state ~50
Extract global app state (Redux, Next.js, Nuxt, Remix, SvelteKit, Gatsby, Astro, Alpine, HTMX).
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
aria_violations ~67
Minimal accessibility scan grouped by impact (critical/serious/moderate/minor). Covers image-alt, button-name, link-name, label, duplicate-id, html-has-lang, landmark-one-main. Zero dependency — for full WCAG coverage run axe-core in your test pipeline.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| critical | array | — | — |
| minor | array | — | — |
| moderate | array | — | — |
| serious | array | — | — |
No examples provided.
assert_text_contains ~114
Check that the given text appears on the page in one round-trip. If selector is set, searches only that element's text; otherwise searches body innerText. Returns ok=true with a surrounding snippet on hit, ok=false with a short page-tail snippet on miss. Replaces extract+string-match for post-action verification.
| Name | Type | Req | Description |
|---|---|---|---|
| case_insensitive | boolean | — | Fold case when comparing. Default false. |
| selector | string | — | Optional CSS selector to scope the search. |
| text | string | yes | Text to search for. |
No output schema declared.
No examples provided.
auto_extract ~46
Auto-detect repeating patterns (product cards, search results, list items) and extract structured data. No selectors needed.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
back ~31
Navigate to the previous page in browser history (like clicking the browser Back button). Errors if there is no previous entry.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
batch ~88
Execute multiple actions in a single call. Avoids repeated round-trips. Actions: click, type, fill_form_semantic, wait, scroll_to, click_label. Continues on error.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | Array of actions to execute. Each has action (click/type/fill_form_semantic/wait/scroll_to/click_label) plus selector/value/label/fields as needed. |
No output schema declared.
No examples provided.
check_readiness ~58
Check how ready the page is for interaction. Returns a 0-100 score, pending XHR count, skeleton/spinner presence, and suggestions for what to wait for.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
| Name | Type | Req | Description |
|---|---|---|---|
| has_skeleton | boolean | — | — |
| has_spinner | boolean | — | — |
| pending_images | integer | — | — |
| pending_xhr | integer | — | — |
| score | integer | — | — |
| state | string | — | — |
| suggestions | array | — | — |
No examples provided.
click ~50
Click an element by CSS selector. Set wait=true for navigation clicks.
| 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.
click_handle ~107
Click the element identified by a stable node_handle from a previous annotated_screenshot. Unlike click_label, the handle survives DOM mutations that would shuffle label numbers. Returns a stale_handle error when the element is no longer in the DOM — re-annotate and retry.
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | yes | Stable node handle from a previous annotated_screenshot call (the node_handle field). Survives DOM mutations that would shuffle label numbers; returns a stale_handle error if the element has since be… |
No output schema declared.
No examples provided.
click_label ~38
Click an element by its label number from annotated_screenshot.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | yes | Label number from annotated screenshot (e.g. 8) |
No output schema declared.
No examples provided.
click_text ~103
Click an element by its visible text. Resolution: aria-label exact match, then button/link text match, then closest interactive ancestor of a matching text node. Pass role="button"|"link" to disambiguate when text appears in both. Cheaper than annotated_screenshot for the common 'click that thing I can see' case.
| Name | Type | Req | Description |
|---|---|---|---|
| role | string | — | Optional role filter: button or link. |
| text | string | yes | Visible text to match (exact |
No output schema declared.
No examples provided.
close_tab ~49
Close a named tab. Cannot close the currently active tab.
| 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.
compare_tabs ~51
Compare content between two named tabs. Returns what's different, what's only in one tab.
| Name | Type | Req | Description |
|---|---|---|---|
| tab1 | string | yes | Name of the first tab |
| tab2 | string | yes | Name of the second tab |
No output schema declared.
No examples provided.
component_state ~44
Extract component state/props from any framework (React, Vue, Svelte, Angular, Alpine, Lit).
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of the component root element |
No output schema declared.
No examples provided.
configure ~179
Change browser settings without restarting. Use headless=false to see the browser window. Set allow_private_ips=true for local-dev workflows (localhost, 127.0.0.1, private IPs). Pass fresh=true to force-kill the current page and start clean (use after observing session_dead in status).
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_ips | boolean | — | Allow navigation to loopback (127.0.0.1 |
| fresh | boolean | — | Kill the current page and browser and start a fresh session even if headless/allow_private_ips didn't change. Use after observing session_dead=true in status or when accumulated SPA state needs to be… |
| headless | boolean | — | Run browser in headless mode (no visible window). Omit to keep the current setting (default true); a missing value no longer silently switches to a visible window. |
No output schema declared.
No examples provided.
console_errors ~64
Get captured console.error / console.warn messages plus recent network 4xx/5xx failures. Auto-installs lightweight network observers, so failures recorded after the first call surface here without an explicit enable_network_capture.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
| Name | Type | Req | Description |
|---|---|---|---|
| messages | array | — | — |
| network_failures | array | — | — |
No examples provided.
cookies_clear ~104
Clear cookies. With no name, drops all cookies via Network.clearBrowserCookies. With a name, deletes only that cookie (optionally scoped by domain/path). Use this when a backend has been restarted and the previous session token is invalid.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | — | Optional domain scope when deleting a single cookie. |
| name | string | — | Cookie name to delete. Leave empty to clear all cookies. |
| path | string | — | Optional path scope when deleting a single cookie. |
No output schema declared.
No examples provided.
cookies_list ~51
List all cookies for the active page (names + flags only — values are redacted). Useful for diagnosing stale-session issues after a backend restart.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | — | — |
| total | integer | — | — |
No examples provided.
cookies_set ~83
Set a cookie on the active page. Useful for restoring sessions or seeding state.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | — | — |
| expires | number | — | — |
| http_only | boolean | — | — |
| name | string | — | — |
| path | string | — | — |
| same_site | string | — | — |
| secure | boolean | — | — |
| value | string | — | — |
No output schema declared.
No examples provided.
detect_auth_wall ~46
Check if the page is a login wall, paywall, or CAPTCHA. Returns type, confidence, and reason.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
detect_dialog ~48
Check if a modal, dialog, popup, or overlay is currently visible. Returns its title, text, buttons, and inputs.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
detect_frameworks ~33
Detect which frontend frameworks are active on the page.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
discover_form ~38
Discover form fields with their labels, types, and CSS selectors.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | — | CSS selector for specific form (empty = all forms) |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | — | — |
| fields | array | — | — |
| form_selector | string | — | — |
| method | string | — | — |
No examples provided.
dismiss_cookies ~55
Auto-dismiss cookie consent banners. Tries common selectors and text patterns (Accept, Agree, Got it, OK). Returns whether a banner was found and dismissed.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
dispatch_event ~139
Dispatch a DOM event on an element. Useful for triggering SPA event handlers. Special cases: event_type='submit' on a <form> (or any element inside one) calls form.requestSubmit() — the only reliable way to fire Vue @submit.prevent / React onSubmit and run HTML5 validation. event_type='click' invokes el.click() so the default action runs (e.g. submitting the owning form when target is type=submit).
| Name | Type | Req | Description |
|---|---|---|---|
| detail | object | — | Event detail/payload data |
| event_type | string | yes | DOM event type (e.g. click |
| selector | string | yes | CSS selector of the target element |
No output schema declared.
No examples provided.
double_click ~42
Double-click an element.
| 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.
drag_drop ~43
Drag an element and drop it on another element.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | CSS selector of element to drag |
| to | string | yes | CSS selector of drop target |
No output schema declared.
No examples provided.
enable_network_capture ~40
Start capturing network XHR/fetch responses. Patterns filter by URL substring.
| Name | Type | Req | Description |
|---|---|---|---|
| patterns | array | — | URL substring patterns to capture (empty = all) |
No output schema declared.
No examples provided.
extract ~28
Extract text content from a single element.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector to extract text from |
No output schema declared.
No examples provided.
extract_all ~31
Extract text from all elements matching a selector.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector to extract all matching texts |
No output schema declared.
No examples provided.
extract_table ~33
Extract structured data from an HTML table (headers + rows).
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector for the table element |
No output schema declared.
No examples provided.
failed_requests ~56
Recent network requests with status >= 400 (4xx/5xx). URL + method + status + response body snippet. Use after a form submission that silently failed.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | — | — |
| total | integer | — | — |
No examples provided.
fill_form ~28
Fill multiple form fields at once.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | object | yes | Field values keyed by CSS selector |
No output schema declared.
No examples provided.
fill_form_semantic ~116
Fill form fields by label or name. Strings fill text inputs; booleans toggle checkboxes; for radios pass the label/value as a string. Each result includes the value re-read after dispatching input/change events plus a warning when framework binding (Vue v-model / React onChange) didn't pick up the change.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | object | yes | Field values keyed by human-readable field name. Strings fill text inputs/textareas/selects. Booleans toggle checkboxes (or pick a radio when paired with a string label). |
No output schema declared.
No examples provided.
find_by_coordinates ~64
Find the interactive element at given pixel coordinates. Returns the smallest element containing that point, with CSS selector and text. Use after hybrid_observe.
| Name | Type | Req | Description |
|---|---|---|---|
| x | integer | yes | X pixel coordinate in the viewport |
| y | integer | yes | Y pixel coordinate in the viewport |
No output schema declared.
No examples provided.
focus ~32
Set focus on an element, triggering :focus CSS state.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of element to focus |
No output schema declared.
No examples provided.
forward ~31
Navigate to the next page in browser history (like clicking the browser Forward button). Errors if there is no next entry.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
has_element ~29
Check if an element exists on the page.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector to check for |
No output schema declared.
No examples provided.
hover ~39
Hover over an element to trigger CSS :hover states, tooltips, and dropdown menus.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of element to hover over |
No output schema declared.
No examples provided.
hybrid_observe ~74
Vision+DOM hybrid mode: returns a clean screenshot (no labels) plus bounding boxes for all interactive elements. Use find_by_coordinates to select elements by pixel position. Set include_image=true to get the base64 screenshot.
| Name | Type | Req | Description |
|---|---|---|---|
| include_image | boolean | — | Include base64 screenshot in response. Default false to keep responses compact. |
No output schema declared.
No examples provided.
install_submit_tracker ~48
Pre-install the submit tracker so the next submit event records defaultPrevented + XHR count. Call after navigate, before triggering a form submit, if you plan to read submit_outcome afterwards.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_tabs ~35
List all open tabs with their names, URLs, and titles.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | — | — |
| total | integer | — | — |
No examples provided.
markdown ~36
Get a compact markdown representation of the page. Ideal for LLM processing.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.
navigate ~29
Navigate to a URL. Returns page title and URL.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to navigate to |
No output schema declared.
No examples provided.
network_requests ~106
Get captured network requests/responses including request bodies (POST/PUT/PATCH) and response bodies (max 32KB each, truncated if larger). Includes recent buffered requests so you can inspect traffic even if capture was enabled late. If the list is empty and capture was never enabled, the response includes a hint pointing at enable_network_capture.
| Name | Type | Req | Description |
|---|---|---|---|
| max_recent | integer | — | Maximum number of most recent requests to return (0 = all) |
| pattern | string | — | URL substring filter |
| Name | Type | Req | Description |
|---|---|---|---|
| capture_enabled | boolean | — | — |
| count | integer | — | — |
| hint | string | — | — |
| requests | array | — | — |
No examples provided.
network_summary ~95
Rolled-up view of captured network traffic. Returns total count, bucketed by status class (1xx/2xx/3xx/4xx/5xx/0), every request with status >= 400 inline, and the pending count. Single call replaces enable_network_capture → act → failed_requests for the common 'did this action succeed at the network layer' question.
| Name | Type | Req | Description |
|---|---|---|---|
| pattern | string | — | Optional URL substring filter. |
| Name | Type | Req | Description |
|---|---|---|---|
| by_status | object | — | — |
| capture_enabled | boolean | — | — |
| failures | array | — | — |
| hint | string | — | — |
| pending | integer | — | — |
| total | integer | — | — |
No examples provided.
observe ~38
Get a structured snapshot of the current page. Optionally pass url to navigate first.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
| Name | Type | Req | Description |
|---|---|---|---|
| active_navigation | array | — | — |
| active_tab | string | — | — |
| active_tab_id | string | — | — |
| buttons | array | — | — |
| cookies | object | — | — |
| dialog_text | string | — | — |
| dialog_type | string | — | — |
| has_dialog | boolean | — | — |
| inputs | array | — | — |
| interactive_elements | integer | — | — |
| links | array | — | — |
| meta | object | — | — |
| text | string | — | — |
| title | string | — | — |
| url | string | — | — |
No examples provided.
observe_diff ~31
Return only page changes since the last observation.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | — | Optional URL to navigate to before observing |
No output schema declared.
No examples provided.