Skip to main content
Reticle’s table holds 45 tools. Your agent is shown nine: 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_capabilities

Act

reticle_act · reticle_act_and_wait · reticle_act_sequence · reticle_navigate

Observe

reticle_observe · reticle_network · reticle_console · reticle_state · reticle_wait_for

Prove & discover

reticle_assert · reticle_tools · reticle_run

Session & feedback

reticle_session · reticle_feedback
Only reticle_act_and_wait and reticle_assert produce a verdict. Everything else moves or reads the app and proves nothing. A drive that ends without one of those two has no result, however many tools it used and however confident the summary sounds.

Why 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.
Trimming further has a floor. An eight-tool cut measurably dropped real-agent accuracy, because the model loses scaffolding and wanders on harder flows. That reading is old enough to be dated evidence rather than proof, and a fresh A/B against a leaner surface is still unrun. Small is good; empty is not.

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:
That is a real 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:
When the event buffer has evicted old events, a negative result might be a false negative, and it says that too:
A tool that says “no requests found” when it actually means “I lost the ones you asked about” is worse than useless. It is confidently wrong. Reticle would rather tell you its memory is imperfect.

Reference

Look

Act

Observe

Prove and discover

The complete reference

Every tool, every argument, including the 29 in the cold tail.
Last modified on September 18, 2026