Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/scout/issues.md or /mcp/scout/issues.json, or Pod over MCP.

Reported issues for Scout

Pod holds 12 of 12 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to Scout.

Most discussed

Stability + UX bugs surfaced during E2E driving of a Vue/Astro app

Feedback after using scout MCP (scout 1.6.1) to drive a full E2E walkthrough of a Vue + Astro + Go app (brotwerk). Most-impactful fix at top.

Stability bugs

  1. Stale CDP node IDs after framework re-render. click, type, fill_form_semantic cache CDP node refs from prior annotated_screenshot / observe. When Vue/React reconciles, refs invalidate but tools still use them → cryptic cdp: error -32000: Could not find node with given id. Fix: re-resolve selector to live nodeId at a

Read the thread · 2026-05-20 · closed · 1 comment

Expose video recording (Playwright recordVideo) via MCP

Problem

Scout exposes `start_recording` / `stop_recording` / `save_playbook` / `replay_playbook` — but those record an action playbook (JSON of clicks/types for replay), not a screen video.

For demo / docs / landing-page work, the value is the video (MP4 / WebM) that you can embed. Playwright already supports this natively via `browser.newContext({ recordVideo: { dir, size } })` — scout just doesn't expose it.

Workaround

Call Playwright directly:

```js const ctx = a

Read the thread · 2026-05-02 · closed · 1 comment

CDP connection stability + React compatibility issues

Summary

While using Scout extensively to automate and demo a React SPA dashboard (go-teamhealthcheck), I encountered several issues that made the experience unreliable. Filing them together since they came up in the same session.

Environment

Issues

1. Frequent CDP

Read the thread · 2026-03-26 · closed · 1 comment

screenshot: add save_to_disk / output_path so captures return a file path instead of base64

Problem

screenshot and annotated_screenshot return a base64 data URL inline. For an agent driving scout on behalf of a user, that image lands in the agent's context — it renders for the model but never reaches the human. There is no way to hand the capture over.

Encountered while running a scripted end-to-end walkthrough with screenshot milestones: every capture came back as base64, and the user simply saw nothing.

Current workarounds, both bad

  1. Force an overflow. Request

Read the thread · 2026-08-01 · closed · 0 comments

No viewport / device emulation: width params don't set the CSS viewport (responsive testing impossible)

Summary

There is no way to set the browser viewport size / emulate a device through the MCP tools. Width parameters that look like they should control it (screenshot.max_width, start_screen_recording.width/height) only affect the output image / capture frame, not the page's CSS viewport. As a result, width-based @media breakpoints can't be exercised, so mobile/responsive layouts can't be verified.

Repro

  1. configure { headless: true, fresh: true } (also reproduces with

Read the thread · 2026-06-28 · closed · 0 comments

MCP: network capture returns zero requests after navigate() on a localhost SPA

Summary

When debugging a same-origin SPA served on 127.0.0.1, the network-capture tools report zero captured requests — not even the document or static JS assets — despite the page clearly loading and issuing periodic fetch() polls. This makes it impossible to answer the most common debugging question ("did this request fire, and what status did it return?").

Environment

Read the thread · 2026-06-09 · closed · 0 comments

Add network_summary({since: "last_action"}) — collapse capture/check round-trip

Problem

Today: enable_network_capture(patterns) → action → failed_requests → maybe console_errors. Three calls for one question ("did the click trigger a failed request?").

Proposal

Single tool: network_summary({since: "last_action" | "last_navigation" | "session_start"}):

{
  total: 12,
  by_status: {"2xx": 10, "4xx": 1, "5xx": 1},
  failures: [
    {method: "POST", url: "/api/auth/signup", status: 500, body_snippet: "..."}
  ],
  pending: 0,
  duration_ms: 230
}

Why

Read the thread · 2026-05-22 · closed · 0 comments

Tool calls hang silently — add per-call watchdog + auto-reset

Problem

Tool calls (navigate, observe, type, click) can hang indefinitely with no timeout, no error returned to the MCP caller. The session wedges and only a manual reset or full MCP restart recovers.

Repro

Expected

Read the thread · 2026-05-22 · closed · 0 comments

Most recent

Form submission silently fails: click_label on type=submit and dispatch_event(submit) don't fire @submit handlers

Summary

Scout cannot drive form submission on a Vue 3 island that uses @submit.prevent. The handler never fires; no network request is dispatched; no console error surfaces. Two approaches both silently no-op:

  1. click_label on the <button type=\"submit\"> inside the form
  2. dispatch_event with event_type: \"submit\" on the <form> element

The result is that Scout can fill a form (Vue v-model reactivity confirmed via framework_reactive: true), but cannot complete the canonical

Read the thread · 2026-05-17 · closed · 0 comments

wait_for / click failures lack diagnostic context

Scout version: 1.5.0 (30010ef)

Problem

wait_for and click on a missing or stale selector return MCP error -32603 with the selector echoed back, but no information about what was present. Forces a manual fallback to observe to figure out why the selector didn't resolve.

Repro

``` click({ selector: "#tabgroup-access" }) ``` when the actual tabs render under #tabgroup-sharing (parent group): ``` MCP error -32603: browse: timeout waiting for wait for selector on "#tabg

Read the thread · 2026-05-10 · closed · 0 comments

screenshot exceeds tool-result token cap on default + max_width=1024

Scout version: 1.5.0 (30010ef)

Problem

First call to screenshot({ max_width: 1024 }) returned a base64 data URL serialized to ~50,728 characters of JSON, which the harness rejected as "exceeds maximum allowed tokens" and saved to a fallback file.

Tool description claims "Auto-compressed for LLM contexts (200KB)" — but max_width 1024 with default JPEG quality clearly exceeded the harness budget.

Repro

``` screenshot({ max_width: 1024 }) ``` on a typical authenticated dashboar

Read the thread · 2026-05-10 · closed · 0 comments

Allow loopback / private-IP navigation for local-dev workflows

Problem

Scout currently blocks navigation to loopback addresses with:

``` browse: blocked navigation to private/loopback IP 127.0.0.1 ```

This is sensible default for the public-web automation case, but it makes scout unusable for the very common dev workflow of "drive the local app I just built": vite/webpack/next dev server on localhost, locally-running daemon on a custom port, etc.

Repro

``` mcp.scout.navigate({url: "http://127.0.0.1:4173/\"}) // → MCP error: failed to

Read the thread · 2026-05-02 · closed · 0 comments

The remaining reports are on the project's issue tracker.