01
Install
uv tool install agentyc Distillation Labs / Agentyc / Documentation
Installation, shared-browser setup, state handling, deterministic extraction, and debugging guidance for running Agentyc as a browser MCP runtime in real developer workflows.
Agentyc is a deterministic browser MCP runtime for coding agents. It exposes a public stdio MCP server, talks to Chrome or Chromium over CDP, and returns compact browser state with stable refs so agents can inspect and act without depending on brittle selectors or full-DOM dumps.
The product story is intentionally narrow: browser automation for coding agents, not an autonomous agent framework. It does not rely on an LLM fallback in the default browser runtime, and it keeps core workflows local-first by default.
Without Agentyc
Agents read large DOM payloads, reconstruct selectors repeatedly, and lose time debugging browser behavior through indirect abstractions.
With Agentyc
Agents inspect compact state, target stable refs, wait on real network activity, and debug the live browser from one deterministic MCP surface.
The default path is simple: install with `uv`, run `agentyc`, then point your MCP-capable coding agent at the local command. No API key is required for the default browser runtime.
uv tool install agentyc agentyc agentyc init Compatibility
01
uv tool install agentyc 02
agentyc 03
claude mcp add agentyc -- agentyc 04
browser_get_state(mode="min") Claude Code
claude mcp add agentyc -- agentyc Claude Desktop / Cursor / Windsurf
{
"mcpServers": {
"agentyc": {
"command": "agentyc"
}
}
} OpenCode
{
"mcp": {
"agentyc": {
"type": "local",
"command": ["agentyc"]
}
}
} Primary primitive
`browser_get_state` returns structured browser state instead of a raw DOM dump.
Stable refs
Interactive elements get refs like `e123`, which are the preferred targeting contract.
Compact modes
Start with `mode="min"` and escalate only when compact state omitted something you need.
Since hash
Use `since_hash` for follow-up polling so unchanged pages return metadata only.
`browser_extract_content` stays deterministic in the public MCP runtime. When the query matches a supported route, Agentyc can extract links, link collections, images, tables, lists, form fields, or key-value panels without handing the page to an LLM.
Good queries
Step 01
Read browser console output through `browser_get_console_logs()`.
Step 02
Inspect recent traffic with `browser_get_network_log()`.
Step 03
Wait for one precise request or response before continuing.
Step 04
Inspect or replay one captured request when an app is API-heavy.
Step 05
Apply narrow mocks or throttling per tab instead of faking the whole browser.
Step 06
Export one debug bundle with state, logs, network, trace summary, and optional screenshot.
Step 07
Use `browser_set_intent` and the optional HUD surfaces for short operator-facing progress labels.
Step 08
Capture traces when browser performance itself is the debugging target.
The public runtime mainly reads `AGENTYC_` environment variables. The defaults are intentionally practical for local browser automation, while CI and shared-browser setups usually add explicit headless or reuse settings.
| Variable | Example | Purpose |
|---|---|---|
| AGENTYC_HEADLESS | false | Run the browser headless when you need CI or background automation. |
| AGENTYC_ALLOWED_DOMAINS | example.com,*.example.org | Restrict navigation to an allowlist when you want tighter runtime safety. |
| AGENTYC_REUSE_LOCAL_BROWSER | 1 | Auto-attach to the latest locally launched Agentyc browser without copying a CDP URL. |
| AGENTYC_ACTION_TIMEOUT_S | 180 | Per-action timeout enforced by the runtime for browser operations. |
| AGENTYC_HUD_OVERLAY | 1 | Mirror sanitized runtime activity in the optional desktop HUD window. |
| AGENTYC_LOGGING_LEVEL | info | Set Agentyc logging verbosity for local debugging and support. |
Agentyc ships 66 MCP tools. These are the ones developers usually reach for first when wiring a coding agent into real browser work.
Start here
browser_get_state(mode="min") Primary browser inspection primitive. Returns compact page state with stable refs.
browser_navigate(url="https://example.com") Navigate to a URL, optionally in a new tab.
browser_wait_for_stable_dom() Let client-rendered pages settle before you inspect or act again.
browser_search_page(pattern="pricing") Search long pages without manually scrolling or dumping the whole document.
Interaction
browser_click(ref="e123") Click by stable ref, index, or coordinates.
browser_type(ref="e145", text="hello") Clear and type into a field.
browser_select_option(ref="e212", text="Enterprise") Pick a select option by visible label.
browser_new_tab(url="https://example.com") Open a new working surface without disturbing another runtime.
Debugging & extraction
browser_extract_content(query="table rows") Deterministically extract common page structures without LLM fallback.
browser_wait_for_response(url_substring="/api", status=200) Synchronize precisely against API activity.
browser_inspect_network_entry(url_substring="/api/orders") Inspect one request or response, including bodies when needed.
browser_export_debug_bundle(include_screenshot=true) Return a compact artifact with state, logs, network, trace summary, and optional screenshot.
Import time
194.4 ms
Cold session init
1027.4 ms
Average tool latency
43.3 ms
P95 tool latency
161.6 ms
Screenshot reduction
8.3× smaller
Tool surface
66 MCP tools
Verify `uv tool install agentyc` completed and that your uv tool bin directory is on `PATH`. If needed, run the server from an activated environment instead.
Call `browser_get_state()` again and use the fresh `e123` refs. Stable refs survive normal re-renders, but a changed DOM still means you should re-read state before retrying.
Start one shared browser with `agentyc browser --port 9222 --detach`, then attach additional runtimes with `agentyc mcp --reuse-local-browser` or `--cdp-url ...`.
Use `browser_export_debug_bundle()` for a compact state-plus-logs artifact, or wait for a precise request and inspect it with `browser_inspect_network_entry()`.