Scout docs
Scout exposes capability-owned surfaces that agent clients can make available to the agent running inside them. Runtime surfaces like browser, canvas, extension, and payment live inside one browser runtime, while platform adapters pair through their own runtime.
A browser automation environment for AI agents
Scout is a browser automation environment with capability-owned surfaces. Agent clients expose the selected surface's tools to the agent running inside the client.
Public runtime surfaces like browser, canvas, extension, and payment live inside one browser runtime, and platform adapters pair on their own boundary, so the agent only gets the capabilities the workflow actually needs.
The extension has its own app path and bundled tool surface; it is not configured as another public surface.
Each surface owns its capability boundary, endpoint, tool catalog, and runtime adapter.
The shared runtime handles auth, request identity, allowance resolution, and transport.
Agent clients or Chrome extension
Scout has two setup paths: agent clients connect to public surfaces for external workflows, and the extension app path for real-browser workflows.
IDE and CLI agents install or configure only the public surfaces their agent needs, then authenticate with OAuth or an access token.
The extension uses Scout's app flow and its own built-in tool surface for real-browser workflows.
Extension users provide an AI provider or gateway key in settings so Scout can route model requests.
Choose your path, then configure it
Start by choosing the path you are actually using. Agent clients need surface configuration and auth; the Chrome extension needs the app install and a provider key.
For Claude Code, IDE agents, or CLI harnesses, configure the browser runtime for browser, canvas, extension, or payment workflows, and add the Figma adapter only when design-file work is in scope.
For agent clients, use OAuth by default and create access tokens only for CI, scheduled jobs, and non-interactive clients.
For the Chrome extension, add the AI provider key from the model provider you want to use; do not copy runtime configs into the extension.
Verify agent connections with tool discovery before attempting longer automations.
Choose your browser path
Pick the browser context your workflow actually needs before you wire an MCP client.
Hosted browser connector
The default browser-automation path. Configure the browser MCP server in your client, authenticate, and let Scout run browser automation through that connector.
Clean connector-managed browser sessions. No extension. No existing cookies or tabs unless the workflow attaches to a chosen browser target.
IDE agents that need a standard MCP server
CI, scheduled jobs, scraping, and isolated runs
Automation that should not inherit your personal browser state
An MCP-compatible client
The public browser connector endpoint at https://mcp.scout.i.ng/browser
OAuth for normal use, or a Scout MCP token only when browser-based auth is impossible
Chrome extension app
The app path. The extension uses Scout's built-in runtime to operate your real browser with the AI provider key you supply.
Your real Chrome session via the Scout extension and Scout's app-side runtime.
Workflows that require your real logged-in browser
Using existing tabs, sessions, cookies, and extension state
Operator-style tasks where the browser should remain visible and persistent
The Scout Chrome extension
A connection to Scout's app runtime
An AI provider or gateway API key in extension settings
A workflow that explicitly benefits from existing authenticated browser state
Connector server setup
Configure the hosted browser connector, authenticate, then verify the tool catalog with a small real call.
Client
Cursor
Connect Cursor to Scout's hosted browser connector, complete browser-based OAuth, and verify the tool catalog before you start using Scout in chat.
Add the Scout browser connector entry to .cursor/mcp.json.
Save the file and let Cursor reload the MCP configuration.
Choose the Scout server when Cursor prompts to connect.
SnippetJSONCursor should open the browser sign-in flow automatically on first connect. Complete the OAuth prompt, then return to Cursor and confirm the Scout server appears under MCP tools.
Open Cursor Settings > Tools & MCP and confirm the Scout server is connected.
Ask Cursor: "List the Scout MCP tools available in this workspace."
Run a low-risk verification task such as: "Use Scout MCP tools to open example.com and snapshot main."
Access tokens
Use Scout MCP tokens only for clients and jobs that cannot complete browser-based OAuth.
When to use MCP tokens
Use browser-based OAuth for normal interactive setup. Switch to access-token authentication only when your client cannot complete the sign-in flow or when you need non-interactive automation.
Prefer OAuth discovery for local development and everyday IDE use.
Use a Scout MCP token only for CI, scheduled jobs, or MCP clients without browser-based OAuth.
Keep the token scoped to the narrowest environment you can tolerate, ideally development or staging.
Revoke the token when the integration or job no longer needs it.
CI and headless automation
For CI or headless automation, attach a Scout MCP token as the Authorization header. This keeps the transport the same while bypassing browser-based login.
Generate a Scout MCP token from the Scout account UI or token management flow.
Store it in your CI secret store instead of committing it to the repo.
Inject it into the MCP client config as a Bearer header at runtime.
Rotate or revoke it after the automation job, especially for temporary workflows.
Programmatic MCP clients
Programmatic MCP callers can also use a Scout MCP token when they cannot complete OAuth. The auth shape is the same once the request reaches Scout: a userId plus derived workerId, with tokenId included for token-based access.
Use OAuth-derived MCP tokens when you can.
Fall back to a Scout MCP token only when browser sign-in is impossible.
Keep the token in environment variables or your secret manager.
Verify the connection with listTools() before starting a long-running job.
Environment variables
Optional configuration knobs for MCP clients, BYOK provider keys, and wallet-backed payments.
MCP Token
OptionalFallback credential for CI or non-OAuth clients. Supply it as a Bearer header when your MCP client cannot complete the browser sign-in flow.
SnippetTEXTAI Provider Key (BYOK)
OptionalYour personal AI provider or gateway key for BYOK mode. Configure it in the extension settings so model usage is billed directly by the provider you choose.
SnippetTEXTWallet Private Key
OptionalSupply it as the X-Wallet-Private-Key request header on the browser MCP server. Only the payment tools (balance, pay, transfer) read it for the current request; Scout never stores it. Chrome extension users set it in extension settings instead.
Wallet Network
OptionalSupply it as the X-Wallet-Network request header on the browser MCP server. Defaults to Base Sepolia (testnet). Set to base for mainnet wallet-backed assets.
Default: base-sepolia
Security recommendations
Keep capability, identity, and browser-state boundaries explicit.
Keep AI automation away from production by default
Do not default to production data when connecting an MCP client. Prefer development or staging environments, and keep real customer data away from exploratory AI workflows whenever possible.
Review tool calls, especially after reading untrusted content
Leave manual approval enabled in your MCP client and review tool calls before execution. Prompt injection remains a real risk whenever the model can read untrusted page content and then decide what to run next.
Use the right browser path for the risk level
Prefer hosted browser connector sessions for scraping, testing, and untrusted sites. Reserve the extension path for workflows where you explicitly want your real browser cookies, sessions, and authenticated state.
Treat MCP tokens like high-value secrets
Scout MCP tokens are powerful credentials. Store them in secret managers, scope them narrowly, rotate them when workflows change, and revoke them when an integration ends.
Constrain access rather than relying on the model to behave
Reduce the available action set when possible. Install or configure only the connector MCP servers needed for the workflow, and use the shortest-lived credential that still satisfies the automation.
Quickstart snippets
Small, copyable examples for the browser connector loop.
MCP token
SnippetJSONProgrammatic client fallback
SnippetTYPESCRIPTSnapshot filtering guide
Trim the accessibility tree before extraction to cut tokens and keep the model focused.
Exclude Decorative Elements
Strip decorative elements (icons, separators, generic containers) that add tokens without useful information.
Varies by page — contributes to up to 75% combined reduction with other filters
SnippetTYPESCRIPTRole-Based Filtering
Filter the accessibility tree by ARIA roles. Remove roles that aren't relevant to your task — for example, exclude 'img' and 'separator' when extracting text content.
20–40% reduction depending on page structure
SnippetTYPESCRIPTDepth Limiting
Limit how deep the accessibility tree is traversed. Shallow depths (2–4) capture top-level navigation and headings. Deeper depths (6–8) capture interactive elements inside nested components.
Configurable — deeper pages benefit most
SnippetTYPESCRIPTElement Scoping
Scope the snapshot to a specific element using a CSS selector. Only the subtree rooted at the matched element is included. Ideal when you know the content region (e.g., 'main', '#content', 'article').
50–75% reduction when scoping to content region
SnippetTYPESCRIPTStacked Filtering
Combine multiple filters for maximum reduction. The recommended starting point for most extraction tasks: scope to main content, remove decorative nodes, and limit depth.
Up to 75% combined reduction
SnippetTYPESCRIPTRecipes
Small, copyable end-to-end recipes for common extraction and automation tasks.
Extract Structured Data
Navigate to a page and extract content using DOM property extraction.
Navigate to the target URL
Snapshot the main content area with decorative filtering
Use browser-extract with property: 'article' for clean content or 'text' for element text
SnippetTYPESCRIPTFill and Submit Forms
Fill form fields and submit using element refs from the accessibility snapshot.
Snapshot the page to discover form field refs
Fill each field using browser-interact with action: fill
Click the submit button
Re-snapshot to verify the result
SnippetTYPESCRIPTBatch Operations Pipeline
Chain navigate → snapshot → extract in a single batch call to minimize round-trips.
Define all operations as an array of { tool, params } objects
Send them all at once with browser-batch (max 10 actions)
Process the ordered batch.results array
SnippetTYPESCRIPTEfficient Multi-Page Crawling
Block unnecessary resources and crawl multiple pages for bulk content extraction.
Set up route interception to block images, fonts, and CSS
Navigate to the starting page
Use browser-crawl with an extraction expression
SnippetTYPESCRIPTMobile Device Testing
Set viewport size, user agent, and network throttling to test responsive design and performance.
Resize viewport to mobile dimensions with browser-resize
Set user agent and locale with browser-emulate
Apply network throttling with custom throughput and latency values
Navigate and capture a full-page screenshot
Collect performance metrics
SnippetTYPESCRIPTFile & Clipboard Operations
Handle file downloads, attachments, and clipboard operations in automated workflows.
Use browser-download to wait for and capture downloads
Use browser-attach to attach files to <input type='file'> elements
Use browser-evaluate for clipboard access
SnippetTYPESCRIPTConnector reference
Verified against the registered connector handler surfaces so browser, canvas, extension, and payment appear as runtime surfaces and Figma as a platform adapter.
Extension
mcp.scout.i.ng/browserSideload and automate an unpacked Chrome extension — launch, open its UI pages, evaluate the background service worker, read/write storage, and reload. Built for extension development workflows.
Hover a command to preview what it does.
Extension
5Sideload an extension, open its pages, drive the background worker, manage storage, and reload.
extension-launchextension-openextension-backgroundextension-reloadextension-storageTool parameters reference
Every registered MCP tool with its parameters and return shape, grouped by capability. Expand a group to inspect individual tools.
Extension
5 tools
Extension
5 toolsSideload an extension, open its pages, drive the background worker, manage storage, and reload.
extension-launchsessionLaunch Chromium with an unpacked extension via --load-extension. Returns sessionRef and extensionId.
extensionPathstringrequiredAbsolute path to the unpacked extension directory. Must contain a manifest.json.userDataDirstringrequiredPersistent browser profile directory used to launch the extension. Use a dedicated automation profile, not your everyday browser profile.headlessbooleanoptionaldefault: falseWhether to run the browser headlessly. Defaults to false because extension service workers and popups require a non-old-headless environment.urlstringoptionalURL to navigate to after launch. Defaults to about:blank.waitUntil'commit' | 'domcontentloaded' | 'load' | 'networkidle'optionaldefault: loadNavigation completion condition (only used when url is provided): commit, domcontentloaded, load, networkidletimeoutnumberoptionaldefault: 30000Maximum time in milliseconds to wait for the browser to launch and the extension to initialize its background context.windowSize{ height: number, width: number } | nulloptionalInitial browser window dimensions ({ height, width }). Null uses Chromium's default sizing.chromiumFlagsstring[]optionalAdditional Chromium launch flags.Returns: sessionRef and extensionId
extension-openinteractionOpen an extension HTML page (popup, sidepanel, options) in a new tab. Returns a tabRef for browser-* tools.
extensionIdstringrequiredThe 32-character Chrome extension ID returned by extension-launch.pagestringrequiredExtension HTML file to open relative to the extension root. Common values: popup.html, sidepanel.html, options.html.waitUntil'commit' | 'domcontentloaded' | 'load' | 'networkidle'optionaldefault: loadNavigation completion condition.timeoutnumberoptionaldefault: 15000Maximum time in milliseconds to wait for the extension page to load.Returns: tabRef and accessibility snapshot of the extension UI
extension-backgrounddebugEvaluate JavaScript in the extension background service worker. Full chrome.* API access with promises auto-awaited.
extensionIdstringrequiredThe 32-character Chrome extension ID returned by extension-launch.expressionstringrequiredJavaScript expression to evaluate in the extension background context.Returns: Serialized evaluation result
extension-reloadsessionReload the extension via chrome.runtime.reload(). Waits for the service worker to re-register by default.
extensionIdstringrequiredThe 32-character Chrome extension ID returned by extension-launch.waitForServiceWorkerbooleanoptionaldefault: trueAfter reloading, wait for the extension's service worker or background page to re-register before returning.waitTimeoutnumberoptionaldefault: 10000Maximum time in milliseconds to wait for the background context to re-register after reload.Returns: Confirmation
extension-storagestorageRead or write chrome.storage areas (local, sync, session, managed). Supports get, set, remove, and clear.
extensionIdstringrequiredThe 32-character Chrome extension ID returned by extension-launch.action'get' | 'set' | 'remove' | 'clear'requiredStorage action: get, set, remove, or clear.area'local' | 'sync' | 'session' | 'managed'optionaldefault: localChrome storage area to target: local, sync, session, or managed (read-only enterprise policy storage).keysstring[]optionalStorage keys to read (get) or delete (remove). Omit to read the full area.dataRecord<string, unknown>optionalKey-value pairs to write. Values must be JSON-serialisable (set action).Returns: Storage values or confirmation
Architecture notes
The small set of system concepts that actually change how you choose a path, authenticate, and operate Scout safely.
Connectors are configured separately so each workflow only exposes the capabilities it actually needs.
The extension follows Scout's app-side tool flow rather than appearing as another public connector users install directly.
Use the extension path only when the task depends on your real tabs, cookies, or authenticated browser state; otherwise keep the workflow on isolated connector sessions.
FAQ
Common questions about setup, authentication, browser state, security, and billing.
