ora research · september 2026

Jev and the agentic web

TypeSafe introduced Jev, a decision model that answers a closed question, which option, which element, yes or no, in about 150 ms at a fraction of a language model's price. We wanted to know whether Jev makes a site more accessible and usable for agents, and how that holds up across the top protocols an agent already uses to work a website: browser automation, WebMCP tools and NLWeb search.

With Jev, agents finished tasks up to 4.3× faster and up to 13× cheaper, and were faster in every paired run. Task success did not drop: every task passed both ways on WebMCP and NLWeb, and on the browser the two split on three tasks, where Jev won the longest and lost the simplest. With deciding this cheap, the largest gains are in what the site exposes to agents.

Up to 4.3× faster with Jev

median time per task, seconds · lower is better
with Jevwithout Jev
seconds per task1.9 s8.2 s4.3× faster1.4 s3.7 s2.6× faster2.0 s7.8 s3.9× faster
browser-use9 tasks · success 78% vs 71%
WebMCP10 tasks · success 100% vs 100%
NLWeb5 tasks · success 100% vs 100%
the same tasks, the same site, the same writer · only the step decider changesora.ai/research

the experiment

How we ran it

The site is a warehouse, a helpdesk and a document vault we host and seed ourselves, so every task has a known answer or end state. The agents are simple Claude agents, with Claude Haiku 4.5 writing any free text. The only difference between the arms is who makes each step's closed choices: Jev, or Claude Haiku 4.5 from the same state. Ten tasks, five repeats each, a fresh workspace per run: 240 runs, each verified against live state or the exact answer.

browser
The agent drives the pages through browser-use's jev-ultrafast.
Jev decidesthe operation, the element to act on, and the option in any dropdown
the model writesthe free text to type into a field
9 tasks · 90 runs
WebMCP
The agent calls the tools the page registers with navigator.modelContext.
Jev decideswhich tool to call, or that the task is done
the model writesthe tool's arguments
10 tasks · 100 runs
NLWeb
The agent queries the site's NLWeb /ask endpoint.
Jev decideswhen to ask, which result to open, and the ranking of the results on the site side
the model writesthe query
5 tasks · 50 runs

Examples of what the agent was asked

five of the ten task prompts, verbatim, simplest first · right: the surfaces that offer the task
readWhat is the unit price of the Quenquen Renmar kit?browser · WebMCP · NLWeb
readWhich customer reported helpdesk ticket HD-5090?browser · WebMCP · NLWeb
readHow many units of the Quentho Dordor pack (SKU ENC-1027) are currently in stock across all depots?browser · WebMCP
writePlace a new order for customer Vidorfal Industrial (C-108) for 40 units of the Marmar Marka kit (SKU ADH-1038).browser · WebMCP
writeAssign helpdesk ticket HD-5001 to agent Teodor Voss (AG-13) and mark it resolved.browser · WebMCP
every prompt names real records from the seeded siteora.ai/research

01 / time

Faster in every paired run

Browser tasks took 1.9 s with Jev and 8.2 s without. WebMCP: 1.4 s against 3.7. NLWeb: 2.0 s against 7.8. The slowest run with Jev still beat the median run without it, on every surface.

The slowest run with Jev beat the median run without it

one dot per run · tick: median · lower is better
with Jevwithout Jev
0 s5 s10 s15 s20 sseconds per run → slowerbrowser · with Jev · intent-order-01 · repeat 0 · 2.2 sbrowser · with Jev · intent-transfer-01 · repeat 0 · 2.9 sbrowser · with Jev · intent-stock-01 · repeat 0 · 2.4 sbrowser · with Jev · intent-ticket-01 · repeat 0 · 1.6 sbrowser · with Jev · intent-doc-01 · repeat 0 · 1.7 sbrowser · with Jev · intent-price-01 · repeat 0 · 3.6 sbrowser · with Jev · intent-customer-01 · repeat 0 · 0.8 sbrowser · with Jev · intent-reporter-01 · repeat 0 · 2.4 sbrowser · with Jev · intent-doc-02 · repeat 0 · 1.8 sbrowser · with Jev · intent-order-01 · repeat 1 · 2.0 sbrowser · with Jev · intent-transfer-01 · repeat 1 · 2.9 sbrowser · with Jev · intent-stock-01 · repeat 1 · 2.0 sbrowser · with Jev · intent-ticket-01 · repeat 1 · 1.3 sbrowser · with Jev · intent-doc-01 · repeat 1 · 1.8 sbrowser · with Jev · intent-price-01 · repeat 1 · 3.4 sbrowser · with Jev · intent-customer-01 · repeat 1 · 0.9 sbrowser · with Jev · intent-reporter-01 · repeat 1 · 1.7 sbrowser · with Jev · intent-doc-02 · repeat 1 · 1.7 sbrowser · with Jev · intent-order-01 · repeat 2 · 1.9 sbrowser · with Jev · intent-transfer-01 · repeat 2 · 2.8 sbrowser · with Jev · intent-stock-01 · repeat 2 · 2.1 sbrowser · with Jev · intent-ticket-01 · repeat 2 · 1.4 sbrowser · with Jev · intent-doc-01 · repeat 2 · 1.6 sbrowser · with Jev · intent-price-01 · repeat 2 · 3.3 sbrowser · with Jev · intent-customer-01 · repeat 2 · 0.9 sbrowser · with Jev · intent-reporter-01 · repeat 2 · 1.7 sbrowser · with Jev · intent-doc-02 · repeat 2 · 2.7 sbrowser · with Jev · intent-order-01 · repeat 3 · 2.1 sbrowser · with Jev · intent-transfer-01 · repeat 3 · 2.8 sbrowser · with Jev · intent-stock-01 · repeat 3 · 2.1 sbrowser · with Jev · intent-ticket-01 · repeat 3 · 1.5 sbrowser · with Jev · intent-doc-01 · repeat 3 · 1.6 sbrowser · with Jev · intent-price-01 · repeat 3 · 3.7 sbrowser · with Jev · intent-customer-01 · repeat 3 · 1.0 sbrowser · with Jev · intent-reporter-01 · repeat 3 · 1.6 sbrowser · with Jev · intent-doc-02 · repeat 3 · 1.8 sbrowser · with Jev · intent-order-01 · repeat 4 · 2.5 sbrowser · with Jev · intent-transfer-01 · repeat 4 · 3.0 sbrowser · with Jev · intent-stock-01 · repeat 4 · 2.0 sbrowser · with Jev · intent-ticket-01 · repeat 4 · 1.4 sbrowser · with Jev · intent-doc-01 · repeat 4 · 1.8 sbrowser · with Jev · intent-price-01 · repeat 4 · 3.4 sbrowser · with Jev · intent-customer-01 · repeat 4 · 0.8 sbrowser · with Jev · intent-reporter-01 · repeat 4 · 2.3 sbrowser · with Jev · intent-doc-02 · repeat 4 · 1.7 sbrowser · without Jev · intent-order-01 · repeat 0 · 8.9 sbrowser · without Jev · intent-transfer-01 · repeat 0 · 10.5 sbrowser · without Jev · intent-stock-01 · repeat 0 · 8.7 sbrowser · without Jev · intent-ticket-01 · repeat 0 · 10.7 sbrowser · without Jev · intent-doc-01 · repeat 0 · 5.5 sbrowser · without Jev · intent-price-01 · repeat 0 · 17.6 sbrowser · without Jev · intent-customer-01 · repeat 0 · 4.0 sbrowser · without Jev · intent-reporter-01 · repeat 0 · 8.5 sbrowser · without Jev · intent-doc-02 · repeat 0 · 8.0 sbrowser · without Jev · intent-order-01 · repeat 1 · 7.8 sbrowser · without Jev · intent-transfer-01 · repeat 1 · 12.8 sbrowser · without Jev · intent-stock-01 · repeat 1 · 9.3 sbrowser · without Jev · intent-ticket-01 · repeat 1 · 9.2 sbrowser · without Jev · intent-doc-01 · repeat 1 · 5.5 sbrowser · without Jev · intent-price-01 · repeat 1 · 18.9 sbrowser · without Jev · intent-customer-01 · repeat 1 · 3.8 sbrowser · without Jev · intent-reporter-01 · repeat 1 · 8.2 sbrowser · without Jev · intent-doc-02 · repeat 1 · 5.6 sbrowser · without Jev · intent-order-01 · repeat 2 · 7.7 sbrowser · without Jev · intent-transfer-01 · repeat 2 · 12.1 sbrowser · without Jev · intent-stock-01 · repeat 2 · 10.0 sbrowser · without Jev · intent-ticket-01 · repeat 2 · 10.1 sbrowser · without Jev · intent-doc-01 · repeat 2 · 7.8 sbrowser · without Jev · intent-price-01 · repeat 2 · 20.7 sbrowser · without Jev · intent-customer-01 · repeat 2 · 3.9 sbrowser · without Jev · intent-reporter-01 · repeat 2 · 8.3 sbrowser · without Jev · intent-doc-02 · repeat 2 · 7.7 sbrowser · without Jev · intent-order-01 · repeat 3 · 7.5 sbrowser · without Jev · intent-transfer-01 · repeat 3 · 11.5 sbrowser · without Jev · intent-stock-01 · repeat 3 · 8.1 sbrowser · without Jev · intent-ticket-01 · repeat 3 · 9.4 sbrowser · without Jev · intent-doc-01 · repeat 3 · 4.8 sbrowser · without Jev · intent-price-01 · repeat 3 · 20.0 sbrowser · without Jev · intent-customer-01 · repeat 3 · 3.3 sbrowser · without Jev · intent-reporter-01 · repeat 3 · 6.1 sbrowser · without Jev · intent-doc-02 · repeat 3 · 7.8 sbrowser · without Jev · intent-order-01 · repeat 4 · 10.2 sbrowser · without Jev · intent-transfer-01 · repeat 4 · 12.5 sbrowser · without Jev · intent-stock-01 · repeat 4 · 10.4 sbrowser · without Jev · intent-ticket-01 · repeat 4 · 7.7 sbrowser · without Jev · intent-doc-01 · repeat 4 · 5.3 sbrowser · without Jev · intent-price-01 · repeat 4 · 9.7 sbrowser · without Jev · intent-customer-01 · repeat 4 · 3.5 sbrowser · without Jev · intent-reporter-01 · repeat 4 · 8.1 sbrowser · without Jev · intent-doc-02 · repeat 4 · 7.8 sWebMCP · with Jev · intent-order-01 · repeat 0 · 1.2 sWebMCP · with Jev · intent-transfer-01 · repeat 0 · 1.9 sWebMCP · with Jev · intent-stock-01 · repeat 0 · 1.6 sWebMCP · with Jev · intent-lowstock-01 · repeat 0 · 1.4 sWebMCP · with Jev · intent-ticket-01 · repeat 0 · 1.7 sWebMCP · with Jev · intent-doc-01 · repeat 0 · 1.4 sWebMCP · with Jev · intent-price-01 · repeat 0 · 1.3 sWebMCP · with Jev · intent-customer-01 · repeat 0 · 1.4 sWebMCP · with Jev · intent-reporter-01 · repeat 0 · 1.3 sWebMCP · with Jev · intent-doc-02 · repeat 0 · 1.4 sWebMCP · with Jev · intent-order-01 · repeat 1 · 1.2 sWebMCP · with Jev · intent-transfer-01 · repeat 1 · 1.6 sWebMCP · with Jev · intent-stock-01 · repeat 1 · 1.3 sWebMCP · with Jev · intent-lowstock-01 · repeat 1 · 1.3 sWebMCP · with Jev · intent-ticket-01 · repeat 1 · 1.6 sWebMCP · with Jev · intent-doc-01 · repeat 1 · 1.5 sWebMCP · with Jev · intent-price-01 · repeat 1 · 1.4 sWebMCP · with Jev · intent-customer-01 · repeat 1 · 1.5 sWebMCP · with Jev · intent-reporter-01 · repeat 1 · 1.4 sWebMCP · with Jev · intent-doc-02 · repeat 1 · 1.4 sWebMCP · with Jev · intent-order-01 · repeat 2 · 1.1 sWebMCP · with Jev · intent-transfer-01 · repeat 2 · 1.5 sWebMCP · with Jev · intent-stock-01 · repeat 2 · 1.4 sWebMCP · with Jev · intent-lowstock-01 · repeat 2 · 1.4 sWebMCP · with Jev · intent-ticket-01 · repeat 2 · 1.9 sWebMCP · with Jev · intent-doc-01 · repeat 2 · 1.4 sWebMCP · with Jev · intent-price-01 · repeat 2 · 1.6 sWebMCP · with Jev · intent-customer-01 · repeat 2 · 1.4 sWebMCP · with Jev · intent-reporter-01 · repeat 2 · 1.3 sWebMCP · with Jev · intent-doc-02 · repeat 2 · 1.6 sWebMCP · with Jev · intent-order-01 · repeat 3 · 1.2 sWebMCP · with Jev · intent-transfer-01 · repeat 3 · 1.8 sWebMCP · with Jev · intent-stock-01 · repeat 3 · 1.4 sWebMCP · with Jev · intent-lowstock-01 · repeat 3 · 1.7 sWebMCP · with Jev · intent-ticket-01 · repeat 3 · 1.8 sWebMCP · with Jev · intent-doc-01 · repeat 3 · 1.6 sWebMCP · with Jev · intent-price-01 · repeat 3 · 1.3 sWebMCP · with Jev · intent-customer-01 · repeat 3 · 1.5 sWebMCP · with Jev · intent-reporter-01 · repeat 3 · 1.5 sWebMCP · with Jev · intent-doc-02 · repeat 3 · 1.5 sWebMCP · with Jev · intent-order-01 · repeat 4 · 1.2 sWebMCP · with Jev · intent-transfer-01 · repeat 4 · 1.6 sWebMCP · with Jev · intent-stock-01 · repeat 4 · 2.0 sWebMCP · with Jev · intent-lowstock-01 · repeat 4 · 1.4 sWebMCP · with Jev · intent-ticket-01 · repeat 4 · 1.6 sWebMCP · with Jev · intent-doc-01 · repeat 4 · 1.4 sWebMCP · with Jev · intent-price-01 · repeat 4 · 1.7 sWebMCP · with Jev · intent-customer-01 · repeat 4 · 1.5 sWebMCP · with Jev · intent-reporter-01 · repeat 4 · 1.3 sWebMCP · with Jev · intent-doc-02 · repeat 4 · 1.4 sWebMCP · without Jev · intent-order-01 · repeat 0 · 2.7 sWebMCP · without Jev · intent-transfer-01 · repeat 0 · 3.9 sWebMCP · without Jev · intent-stock-01 · repeat 0 · 4.3 sWebMCP · without Jev · intent-lowstock-01 · repeat 0 · 3.0 sWebMCP · without Jev · intent-ticket-01 · repeat 0 · 6.8 sWebMCP · without Jev · intent-doc-01 · repeat 0 · 2.7 sWebMCP · without Jev · intent-price-01 · repeat 0 · 3.4 sWebMCP · without Jev · intent-customer-01 · repeat 0 · 3.8 sWebMCP · without Jev · intent-reporter-01 · repeat 0 · 3.5 sWebMCP · without Jev · intent-doc-02 · repeat 0 · 3.4 sWebMCP · without Jev · intent-order-01 · repeat 1 · 2.7 sWebMCP · without Jev · intent-transfer-01 · repeat 1 · 3.8 sWebMCP · without Jev · intent-stock-01 · repeat 1 · 4.1 sWebMCP · without Jev · intent-lowstock-01 · repeat 1 · 3.0 sWebMCP · without Jev · intent-ticket-01 · repeat 1 · 6.8 sWebMCP · without Jev · intent-doc-01 · repeat 1 · 2.8 sWebMCP · without Jev · intent-price-01 · repeat 1 · 3.7 sWebMCP · without Jev · intent-customer-01 · repeat 1 · 3.9 sWebMCP · without Jev · intent-reporter-01 · repeat 1 · 3.8 sWebMCP · without Jev · intent-doc-02 · repeat 1 · 3.7 sWebMCP · without Jev · intent-order-01 · repeat 2 · 2.4 sWebMCP · without Jev · intent-transfer-01 · repeat 2 · 3.8 sWebMCP · without Jev · intent-stock-01 · repeat 2 · 4.7 sWebMCP · without Jev · intent-lowstock-01 · repeat 2 · 4.9 sWebMCP · without Jev · intent-ticket-01 · repeat 2 · 7.3 sWebMCP · without Jev · intent-doc-01 · repeat 2 · 3.2 sWebMCP · without Jev · intent-price-01 · repeat 2 · 3.2 sWebMCP · without Jev · intent-customer-01 · repeat 2 · 3.9 sWebMCP · without Jev · intent-reporter-01 · repeat 2 · 3.4 sWebMCP · without Jev · intent-doc-02 · repeat 2 · 3.5 sWebMCP · without Jev · intent-order-01 · repeat 3 · 2.6 sWebMCP · without Jev · intent-transfer-01 · repeat 3 · 3.8 sWebMCP · without Jev · intent-stock-01 · repeat 3 · 4.2 sWebMCP · without Jev · intent-lowstock-01 · repeat 3 · 2.9 sWebMCP · without Jev · intent-ticket-01 · repeat 3 · 6.4 sWebMCP · without Jev · intent-doc-01 · repeat 3 · 2.8 sWebMCP · without Jev · intent-price-01 · repeat 3 · 3.3 sWebMCP · without Jev · intent-customer-01 · repeat 3 · 3.8 sWebMCP · without Jev · intent-reporter-01 · repeat 3 · 3.6 sWebMCP · without Jev · intent-doc-02 · repeat 3 · 3.5 sWebMCP · without Jev · intent-order-01 · repeat 4 · 2.7 sWebMCP · without Jev · intent-transfer-01 · repeat 4 · 3.9 sWebMCP · without Jev · intent-stock-01 · repeat 4 · 5.9 sWebMCP · without Jev · intent-lowstock-01 · repeat 4 · 2.9 sWebMCP · without Jev · intent-ticket-01 · repeat 4 · 7.5 sWebMCP · without Jev · intent-doc-01 · repeat 4 · 2.7 sWebMCP · without Jev · intent-price-01 · repeat 4 · 3.5 sWebMCP · without Jev · intent-customer-01 · repeat 4 · 5.3 sWebMCP · without Jev · intent-reporter-01 · repeat 4 · 3.4 sWebMCP · without Jev · intent-doc-02 · repeat 4 · 3.8 sNLWeb · with Jev · intent-doc-01 · repeat 0 · 1.6 sNLWeb · with Jev · intent-price-01 · repeat 0 · 2.1 sNLWeb · with Jev · intent-customer-01 · repeat 0 · 2.0 sNLWeb · with Jev · intent-reporter-01 · repeat 0 · 2.4 sNLWeb · with Jev · intent-doc-02 · repeat 0 · 1.6 sNLWeb · with Jev · intent-doc-01 · repeat 1 · 1.7 sNLWeb · with Jev · intent-price-01 · repeat 1 · 2.3 sNLWeb · with Jev · intent-customer-01 · repeat 1 · 2.0 sNLWeb · with Jev · intent-reporter-01 · repeat 1 · 2.0 sNLWeb · with Jev · intent-doc-02 · repeat 1 · 1.6 sNLWeb · with Jev · intent-doc-01 · repeat 2 · 1.6 sNLWeb · with Jev · intent-price-01 · repeat 2 · 2.0 sNLWeb · with Jev · intent-customer-01 · repeat 2 · 2.1 sNLWeb · with Jev · intent-reporter-01 · repeat 2 · 2.1 sNLWeb · with Jev · intent-doc-02 · repeat 2 · 1.7 sNLWeb · with Jev · intent-doc-01 · repeat 3 · 1.8 sNLWeb · with Jev · intent-price-01 · repeat 3 · 2.1 sNLWeb · with Jev · intent-customer-01 · repeat 3 · 2.1 sNLWeb · with Jev · intent-reporter-01 · repeat 3 · 2.0 sNLWeb · with Jev · intent-doc-02 · repeat 3 · 1.9 sNLWeb · with Jev · intent-doc-01 · repeat 4 · 1.7 sNLWeb · with Jev · intent-price-01 · repeat 4 · 2.1 sNLWeb · with Jev · intent-customer-01 · repeat 4 · 2.1 sNLWeb · with Jev · intent-reporter-01 · repeat 4 · 2.1 sNLWeb · with Jev · intent-doc-02 · repeat 4 · 1.8 sNLWeb · without Jev · intent-doc-01 · repeat 0 · 5.6 sNLWeb · without Jev · intent-price-01 · repeat 0 · 8.6 sNLWeb · without Jev · intent-customer-01 · repeat 0 · 7.2 sNLWeb · without Jev · intent-reporter-01 · repeat 0 · 8.5 sNLWeb · without Jev · intent-doc-02 · repeat 0 · 4.9 sNLWeb · without Jev · intent-doc-01 · repeat 1 · 4.9 sNLWeb · without Jev · intent-price-01 · repeat 1 · 7.8 sNLWeb · without Jev · intent-customer-01 · repeat 1 · 8.1 sNLWeb · without Jev · intent-reporter-01 · repeat 1 · 8.9 sNLWeb · without Jev · intent-doc-02 · repeat 1 · 4.9 sNLWeb · without Jev · intent-doc-01 · repeat 2 · 4.9 sNLWeb · without Jev · intent-price-01 · repeat 2 · 8.7 sNLWeb · without Jev · intent-customer-01 · repeat 2 · 6.8 sNLWeb · without Jev · intent-reporter-01 · repeat 2 · 8.7 sNLWeb · without Jev · intent-doc-02 · repeat 2 · 5.2 sNLWeb · without Jev · intent-doc-01 · repeat 3 · 5.0 sNLWeb · without Jev · intent-price-01 · repeat 3 · 7.8 sNLWeb · without Jev · intent-customer-01 · repeat 3 · 7.8 sNLWeb · without Jev · intent-reporter-01 · repeat 3 · 8.1 sNLWeb · without Jev · intent-doc-02 · repeat 3 · 4.4 sNLWeb · without Jev · intent-doc-01 · repeat 4 · 5.6 sNLWeb · without Jev · intent-price-01 · repeat 4 · 8.1 sNLWeb · without Jev · intent-customer-01 · repeat 4 · 8.0 sNLWeb · without Jev · intent-reporter-01 · repeat 4 · 9.0 sNLWeb · without Jev · intent-doc-02 · repeat 4 · 11.5 s
browserwith Jevmedian 1.9 s · slowest 3.7 s
browserwithout Jevmedian 8.2 s · slowest 20.7 s
WebMCPwith Jevmedian 1.4 s · slowest 2.0 s
WebMCPwithout Jevmedian 3.7 s · slowest 7.5 s
NLWebwith Jevmedian 2.0 s · slowest 2.4 s
NLWebwithout Jevmedian 7.8 s · slowest 11.5 s
with Jev was faster in every pair of runs with the same task, repeat and surfaceora.ai/research
A step decision: 125 to 159 ms with Jev, 1.1 to 1.2 s without.
breakdown · time per step decision, per surface
surfacewith Jevwithout Jevratiodeciding, share of task time, with Jevwithout Jev
browser159 ms1,211 ms7.6×37%83%
WebMCP137 ms1,120 ms8.2×20%66%
NLWeb125 ms1,126 ms9.0×13%31%

02 / cost

Up to 13× cheaper per task

Without Jev, deciding is nearly the whole cost: $0.0220 of a $0.0233 browser task. With Jev it costs $0.0007, and writing the text becomes the largest cost.

Cost per task, with Jev and without

mean USD per task · same scale on every row · lower is better
with Jevwithout Jev
browser
with Jev
$0.0018
without Jev
$0.0233
13× cheaper
WebMCP
with Jev
$0.0011
without Jev
$0.0046
4× cheaper
NLWeb
with Jev
$0.0029
without Jev
$0.0175
6× cheaper
list prices: Jev $0.042 per million input tokens · Claude Haiku 4.5 $1 in, $5 outora.ai/research
breakdown · where each task's money went
decidingsearch ranking (NLWeb)writing the text
browser · with Jev · $0.0018 a taskdeciding $0.0007 (38%) · writing $0.0011 (62%)
browser · without Jev · $0.0233 a taskdeciding $0.0220 (95%) · writing $0.0013 (5%)
WebMCP · with Jev · $0.0011 a taskdeciding $0.0001 (10%) · writing $0.0010 (90%)
WebMCP · without Jev · $0.0046 a taskdeciding $0.0035 (77%) · writing $0.0011 (23%)
NLWeb · with Jev · $0.0029 a taskdeciding $0.0001 (3%) · search ranking $0.0004 (15%) · writing $0.0023 (82%)
NLWeb · without Jev · $0.0175 a taskdeciding $0.0027 (15%) · search ranking $0.0120 (68%) · writing $0.0028 (16%)

03 / task success

Success held, except on three browser tasks

WebMCP and NLWeb passed every task, with Jev and without. The browser passed 78% of runs with Jev and 71% without, and the whole gap comes from three tasks.

WebMCP and NLWeb passed every task. The browser missed two with Jev, four without.

one dot per task · counts where fewer than 5 of 5 passed · right: share of runs passed · higher is better
all 5 passedsome passednone passed
browserwith Jev
order0/5
transfer
ticketstockpricecustomer0/5
reporter
doc 1doc 2
78%
browserwithout Jev
order0/5
transfer
0/5
ticket
stock3/5
price
customer4/5
reporter
doc 1doc 2
71%
WebMCPwith Jev
ordertransferticketstocklow stockpricecustomerreporterdoc 1doc 2
100%
WebMCPwithout Jev
ordertransferticketstocklow stockpricecustomerreporterdoc 1doc 2
100%
NLWebwith Jev
pricecustomerreporterdoc 1doc 2
100%
NLWebwithout Jev
pricecustomerreporterdoc 1doc 2
100%
a task appears only on the surfaces that offer itora.ai/research
what each task is
orderplace an order for a customer and a SKU
transfermove stock between two depots and complete the transfer
ticketassign a helpdesk ticket to an agent and resolve it
stocktotal units of a SKU across depots
low stockSKUs under ten units in stock
pricethe unit price of a product
customerthe customer with a given tier and city
reporterthe customer who reported a ticket
doc 1the vault document about returns and warranty
doc 2the vault document about the helpdesk FAQ

04 / the browser

Jev won the longest browser task and lost the simplest

Jev finished the seven-step ticket task in every run and gave up on the two-step lookup in every run, where the language model found the search box. Its wins and its failures repeat exactly: with Jev, every task took the same path on all five repeats.

Jev stops when the page does not expose the element it needs. Whether a fast decider finishes a task is decided by what the site exposes.

Seven steps done, two steps abandoned

browser · one run per arm, step by step · with Jev, all five repeats took this path
finishedgave up
The long task. “Assign helpdesk ticket HD-5001 to agent Teodor Voss (AG-13) and mark it resolved.”passed with Jev 5 of 5 · without 0 of 5
with Jevpassed7 steps · 1.6 s
click Ticketsclick HD-5001pick agent AG-13click Assignpick status resolvedclick Change statusdone
without Jevfailed8 steps · 10.7 s
click Ticketsclick HD-5001pick agent AG-13click Assignclick Change statusclick Change statusclick Change statusclick Change status
The short task. “Which customer reported helpdesk ticket HD-5090?”passed with Jev 0 of 5 · without 4 of 5
with Jevfailed2 steps · 2.4 s
click Ticketsgave up
without Jevpassed5 steps · 8.5 s
click Ticketstype “HD-5090”click Filterclick HD-5090answer: C-111
the language model's runs varied · the run shown is the first repeatora.ai/research

05 / where the time goes

Deciding was most of a task. With Jev it is a small part.

Without Jev, choosing the next step is 66 to 83% of a task's time and nearly all of its cost. Jev answers that choice in about 150 ms for a fraction of a cent, so deciding drops to 13 to 37% of the time, and what remains is the one or two calls that write the text. The writer is the same, and on WebMCP and NLWeb so is the number of steps. On the browser Jev also took fewer steps, 4.8 a task against 6.2, because it never waited or repeated a click. What is left is the writer and the page itself.

Where a task's time goes

share of wall time per task · by what the agent was waiting on
decidingsearch ranking (NLWeb)writing the textthe page
browser · with Jev · 1.9 s a taskdeciding 37% · writing 54% · the page 9%
browser · without Jev · 8.2 s a taskdeciding 83% · writing 13% · the page 4%
WebMCP · with Jev · 1.4 s a taskdeciding 20% · writing 78% · the page 1%
WebMCP · without Jev · 3.7 s a taskdeciding 66% · writing 33% · the page 0%
NLWeb · with Jev · 2.0 s a taskdeciding 13% · search ranking 21% · writing 65% · the page 1%
NLWeb · without Jev · 7.8 s a taskdeciding 31% · search ranking 49% · writing 19% · the page 0%
the same model writes the text in both armsora.ai/research

06 / conclusions

What we conclude

Jev cuts a step decision to about 150 ms, so the agent's own thinking is no longer where a task's time or cost goes. What Jev cannot do is finish a task the page does not put in front of it: it will not guess a search box it was never offered, or a second step that is not reachable from the first. Both of its failures in this study were one of those, and both tasks passed in every run where the site offered the same action as a WebMCP tool.

  1. 01
    With Jev deciding, agents finished tasks up to 4.3× faster, and were faster in all 120 paired runs.
    1.9 s against 8.2 on the browser, 1.4 against 3.7 on WebMCP, 2.0 against 7.8 on NLWeb. The slowest run with Jev beat the median run without it on every surface.
  2. 02
    A task cost up to 13× less.
    $0.0018 against $0.0233 on the browser, $0.0011 against $0.0046 on WebMCP, $0.0029 against $0.0175 on NLWeb. Without Jev, deciding alone was $0.0220 of a $0.0233 browser task.
  3. 03
    Success held. On the browser the arms split on three tasks, two of them in Jev's favour.
    WebMCP and NLWeb passed every task both ways. On the browser Jev won the seven-step ticket task 5 to 0 and the price lookup 5 to 3, and lost the reporter lookup 0 to 4, because the search box the language model used was not among the options Jev was offered. Jev never waited and took the same path on every repeat.
  4. 04
    Both of Jev's failures were browser tasks the page did not put in front of it.
    The reporter lookup needed a ticket that was not in the visible list and a search box Jev was never offered. The transfer needed a second step that was not reachable from the first. Exposed as WebMCP tools, both tasks passed in every run with either decider. With deciding this cheap, the largest gains are in what the site exposes to agents.
  5. 05
    What the site exposes decides whether a task finishes. The decider decides how fast and at what cost.
    WebMCP had the smallest gain from Jev, 2.6×, and was the only surface where every task passed both ways. The browser had the largest gain, 4.3×, and every failure in the study. A tool removes a decision before the decider sees it, so the surface with the most exposure gains least from a faster decider and still finishes first: 1.4 s a task on WebMCP with Jev, against 1.9 s on the browser.
  6. 06
    Jev fails fast and the same way every time. The language model fails slowly and differently each time.
    Jev's two browser failures took the same path on all five repeats; on the reporter lookup that was one click, then it gave up, in 2.4 s. The language model failed the ticket task by clicking Change status four times in a row, 8 steps and 10.7 s, and passed the price lookup 3 of 5 with runs from 9.7 to 20.7 s. A failure that repeats exactly is one a site owner can find and fix once. What remains after a cheap decider is the text the model writes, 62 to 90% of a Jev task's cost, so the next lever is fewer free-text steps: tool arguments over typed text.

07 / sources

01
Jev System One, POST /v1/systemone · closed questions answered with probabilities · $0.042 per million input tokens, output free
02
MIT · pinned at commit 1231850 · the browser agent: its page snapshot, element table, step questions, text contract and guarded executor
03
the acme-v1 warehouse, helpdesk and document vault · the intent tasks (compose/specs) · the verifier · the agent-eval harness (tools/agent-eval)
04
the dataset behind this report: all 240 runs, task pass counts, the 10 task specs, and a script that recomputes every time and success figure above
05
W3C Web Machine Learning community group · tools a page registers through navigator.modelContext
06
natural-language search for a site through an /ask endpoint
cite this abstract

ora research (2026). Jev and the agentic web: agents with Jev and without it, on a browser, WebMCP tools and NLWeb search, across 240 runs. ora.ai/research, september 2026.