reticle_act, reticle_act_and_wait, reticle_assert, reticle_look, reticle_navigate, reticle_observe, reticle_session, reticle_tools and reticle_verify. Only reticle_act_and_wait and reticle_assert produce a verdict.
Most of the rest were not removed. They were merged. reticle_snapshot is reticle_look { action: "page" }; reticle_console is reticle_observe { action: "console" }. One tool, one action argument, same work. Calling a retired name returns the call that replaced it, and reticle_tools prints the whole mapping.
That is not a limitation, it’s the design. MCP re-sends every advertised tool definition to the model on every single turn, so the tool list is not a menu you pay for once. It’s rent.
A wider surface costs tokens on every message. Less obviously, it makes the model wander: give it fifty ways to look at a page and it will try several before doing anything useful.
What the nine do not reach are the specialised tools: reticle_screenshot, reticle_visual_diff, reticle_storage, reticle_network_mock, reticle_clock. There is no dispatch hatch on this surface by design, so those need a daemon started with RETICLE_ADVERTISE_ALL_TOOLS=1.
Measured off the real wire on 2026-09-16, by reading
tools/list from a fresh daemon: the default
surface is 9 tools at 17,663 bytes, against 30 tools at 126,954 bytes when
RETICLE_ADVERTISE_ALL_TOOLS is set, 7.2x more and charged on every message.
bench/harness/schema-tax.mjs converts those bytes to tokens by putting
every server through one tokenizer in a single pass. Re-measure before quoting any of it; the
surface grows, and the figures this note replaced were a year out of date and described a surface
that no longer existed.The default 19
Grouped by the job they do in the verify loop.Look
reticle_snapshot · reticle_query · reticle_inspect · reticle_sessions ·
reticle_capabilitiesAct
reticle_act · reticle_act_and_wait · reticle_act_sequence · reticle_navigateObserve
reticle_observe · reticle_network · reticle_console · reticle_state · reticle_wait_forProve & discover
reticle_assert · reticle_tools · reticle_runSession & feedback
reticle_session · reticle_feedbackWhy these and not others
Each one earned its slot, and a couple are there because of measured mistakes.reticle_inspect maps a DOM node to src/components/Sidebar.tsx:41. Finding a bug is half the job. Knowing which file to open is the half that makes an agent useful.
It used to be reachable only through reticle_run, which meant an agent had to already know it existed to use it.
reticle_act_sequence batches a multi-step interaction into one round trip. It was also reachable only through reticle_run, and the consequence is a login form driven one call at a time, over and over.
Those repeats were not retries. The calls succeeded and got repeated, because the batching tool was invisible. A tool an agent must already know about is a tool that never gets called.
Direct reticle_network and reticle_console stay advertised even though reticle_observe can filter for both, because two obvious tools beat one clever tool with a filter grammar.
Reaching the other 29
reticle_run takes a tool name and its arguments. reticle_tools lists what’s available and returns the full argument grammar for any of them, so your agent can discover a tool mid-task without you having pre-loaded its schema.
Notable residents of the cold tail: flow recording and replay, visual diffing and screenshots, network mocking, viewport pinning, coverage, autonomous crawling, and the human-in-the-loop session controls.
Every response carries its cost
Reticle tells you what each answer cost, because a verification tool that quietly eats your context window is not saving you anything:reticle_query response: seven buttons found, with source pointers, for 236 tokens.
Every response tells you when not to trust it
This is the part we’re proudest of and the part that makes demos slightly less shiny. When the browser tab is backgrounded, every response says so:Reference
Look
Act
Observe
Prove and discover
The complete reference
Every tool, every argument, including the 29 in the cold tail.