Hound sends the diff, not the page

Every mainstream browser-automation MCP server returns the page's full accessibility tree on every action. Hound budgets each response and returns only what changed. Measured here, on three real pages, in an 8-step agent flow.

99.2%
fewer tokens
311,967
conventional total
2,625
hound total
3
pages measured

Measured 28 October 2026 · budget 1,200 tokens/call · 8-step flow · single run per page.

Results

PageConventionalHoundSavedReduction
example.com 8,7818457,93690.4%
news.ycombinator.com 93,48580692,67999.1%
en.wikipedia.org/wiki/Web_scraping 209,701974208,72799.5%
Total 311,9672,625309,34299.2%

The gap widens with page size: 91% on a near-empty page, 99.5% on a long Wikipedia article. That is the point — cost becomes a function of change, not page size.

Where the saving comes from

Per-step detail for news.ycombinator.com, the same flow with both strategies:

StepConventionalHoundRatio
open11,68357020.5×
snapshot11,68329402.9×
act:click11,68329402.9×
snapshot11,68329402.9×
snapshot11,68329402.9×
act:fill11,69062188.5×
snapshot11,69029403.1×
snapshot11,69029403.1×
Total93,485806116×

Conventional pays the full tree eight times. Hound pays once on open, then a 29-token "nothing changed" delta per follow-up.

Method

Honest caveats. This is a single run per page, not an average; page content changes over time, so absolute numbers drift. The estimator is a model, not a real tokenizer. And the comparison is against a snapshot-per-action server — a server that already sends diffs would narrow this gap. The claim is narrow on purpose: Hound removes the repeated full-tree cost.

Reproduce it

Two commands, no account, no API key:

pip install hound-browser-mcp
playwright install chromium

hound-bench                      # default pages
hound-bench --url https://your-page.example --json out.json
hound-bench --pages 3 --budget 1200 --profile balanced

Or from source: pip install -e ".[dev]" && python -m bench.run --url https://news.ycombinator.com

Raw output for the run above is committed at bench/results/2026-10-28.json. If your numbers differ, your page changed or your budget did — that is the benchmark working as intended, not breaking.