reticle_navigate
Navigate the connected browser tab to a URL, or reload it in place with { reload: true } (add { hard: true } to bypass the cache). e.g. {"url":"/settings"}
urlhardreloadsessionIdtimeout_ms
io.github.reticlehq由 GitHub 账号 reticlehq 发布v3.9.0更新于 Nov 3, 2026
Verify a running web app from the inside over MCP: look, act, observe, assert. No screenshots.
Reticle 让编程助手在浏览器标签页中驱动并验证正在运行的 Web 应用:查看、操作、观察、断言,无需截图。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
The Reticle bridge + MCP server. It hosts a localhost WebSocket endpoint your app's @reticlehq/browser SDK connects to, and exposes MCP tools your coding agent uses to look at, act on, observe, and assert against the live app.
The package installs a reticle bin, so inside a project reticle mcp and npx @reticlehq/server mcp are the same command. reticle is not a package name on npm.
Point your agent at it. On Claude Code, register it at user scope:
Default tools (10):
reticle_navigate, reticle_look, reticle_act, reticle_act_and_wait, reticle_observe, reticle_assert, reticle_session, reticle_tools, reticle_run, reticle_verify.
Only reticle_act_and_wait and reticle_assert return a verdict; everything else moves or reads the app.
More tools ship but are not advertised, to keep the per-turn tool payload small: screenshots and visual diff, saved flows, recording, baselines, clock control, viewport, crawl, coverage, network mocking, leases and more. Reach any of them by name with reticle_run, list them with reticle_tools, or advertise the whole surface with RETICLE_ADVERTISE_ALL_TOOLS=1 (this roughly doubles the per-turn tool payload).
See the main README.
来源:server/README.md,提交 1c7691b
Navigate the connected browser tab to a URL, or reload it in place with { reload: true } (add { hard: true } to bypass the cache). e.g. {"url":"/settings"}
urlhardreloadsessionIdtimeout_msAct on a ref, then wait for a predicate to hold — one hop for the act->observe->assert loop. e.g. {"ref":"e42","action":"click","until":{"kind":"signal","name":"todos:loaded"}}
refargsuntilaction必填detailintenttargetdurablepredicatesessionIdtimeout_msrefuseWhenThrottledBy action: "list" (the default) shows connected tabs; "yield" is MANDATORY before you stop; "tune" hides or moves the HUD; "feedback" reports a problem. e.g. {"action":"yield","mode":"waiting"}
allhudkindmodeneednotetextclaimlevelmodeltraceaction另有 9 个The Reticle Harness is { action: "explore" }: when the user asks for the Harness, or asks Reticle to drive and verify the app for you, call it and do not drive… e.g. {"action":"change","files":["src/App.tsx"]}
appsayflowstopwaitapplyfilesnamesrunIdscopesinceaction必填另有 14 个Read the page, by action: "page" is the semantic snapshot of what is rendered, "find" resolves a locator (testid/role/text/component) to refs you can act on, "… e.g. {"action":"find","by":"testid","value":"submit"}
byaltidsrefdiffmodenamepathroleselftextattrs另有 12 个What the app DID, by action: "events" is the reaction window since a cursor, "network" the requests it made, "console" what it logged. e.g. {"action":"events"}
oklevellimitsinceuntilactionassetsbodiesmethodstatusfiltersactionId另有 4 个Prove a consequence, by action: "now" evaluates a predicate against the window that already exists, "wait" waits for one to become true within a budget. e.g. {"action":"now"}
sinceuntilactiondetailintentpredicatesessionIdtimeout_msAct WITHOUT checking the result — if the action is supposed to cause something, use reticle_act_and_wait { until } instead and get the verdict in the same call. e.g. {"ref":"e42","action":"fill","args":{"value":"hello"}}
refargsburststepsactiondetailtargetsessionIdtimeout_msonDeviationrefuseWhenThrottledDiscover Reticle tools on demand. Call with no arguments to list every tool (name + one-line summary); call with names:["reticle_screenshot", …] to load full descriptions and parameters for specific tools. Then invoke them with reticle_run. This avoids paying for every tool definition on every turn. To make a verification REUSABLE (record once, replay free forever), the flow workflow lives here: reticle_record{action:"start"} → act → reticle_record{action:"stop"} → reticle_flow_save → reticle_verify{action:"flows"} (and reticle_verify { action: "heal" } on drift). Load those names when you want to save or re-run a flow.
namenamesactionInvoke any Reticle tool by name (discover names/params first with reticle_tools). On an unknown tool or bad arguments it returns the available names or the tool's params, so you can correct and retry.
argstool必填sessionId已满足适用检查项的 80%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
请在仓库或注册中心条目中声明许可证。
npx @reticlehq/server init # wire the project: SDK + build plugin + MCP registrationnpx @reticlehq/server mcp # MCP over stdio; auto-starts the bridge on ws://localhost:4400claude mcp add reticle -s user -- npx @reticlehq/server mcp