Chrome extension + MCP server for Claude

Your browser, one decision every half second.

Claude plans. Jev, TypeSafe's decision model, clicks, types and scrolls in your own Chrome, with your own logins. Each step takes about half a second and costs a fraction of a cent.

Free and open source (MIT) with your own OpenRouter key, or prepaid credits with one key from us.

Goal: Search Wikipedia for “Ristretto” and open the Ristretto article.

TYPE_TEXT step 1670 ms

    Jev calls 1Jev time 0.0 scost $0.0000
    A real run, replayed. Every probability, decision time and cost is what Jev returned on Sep 19, 2026 (typesafe/jev-1.13; cost at OpenRouter prices).

    Jev picks. It never writes code.

    The extension turns the page into a numbered list of what you can click or type into. Jev answers one question: which option, with a probability for each. Code maps the number back to the real element, so a model's answer never becomes a selector or a script.

    1. Read the page

      Visible buttons, links and fields become numbered rows, with their current values and checked states. Password fields are never listed.

      extension · ~20 ms
    2. One Jev call

      Which operation, which element for each operation, and is the goal already met? One request answers all three.

      Jev · ~0.5 s
    3. Check before acting

      Stop gates run in code: done, blocked, over budget, or a click that buys, sends or deletes. If the page moved while Jev decided, nothing is clicked and it looks again.

      extension
    4. Act like a person

      A trusted mouse click or keystroke on that exact element. Only typing needs words, and a small model writes them from your goal.

      Chrome · ~50 ms

    What Claude gets

    Claude Code and Claude Desktop see these tools through a small MCP server on your computer. Claude can drive the browser itself, or hand a whole sub-task to Jev and check the result.

    ToolWhat it does
    jev_taskRuns a multi-step task (search, filters, forms) with Jev and returns every step, the cost and the final page.
    jev_findFinds the element that matches a description, with probabilities. Clicks nothing.
    jev_checkHow likely is a statement about the page true? A cheap way to verify a result.
    browser_snapshotThe page as numbered elements plus its visible text.
    browser_click · browser_type · browser_selectAct on element [n] with real input.
    browser_navigate · browser_tabs · browser_backOpen URLs and move between tabs. Tabs Claude opens join an orange “Jev” group.
    browser_read · browser_screenshot · browser_waitThe whole page as markdown, a screenshot, or wait for text to appear.

    Also works with OpenAI Codex (ready-made agent files in the repo), and with Grok Bot, ChatGPT and other cloud apps through remote control, which is off until you switch it on.

    It asks instead of inventing

    Another recorded run, on httpbin's test form. The goal named a customer and a phone number but no email. Jev filled everything it was given, then stopped and asked.

    1. 1TYPECustomer name ← “Ada Lovelace”
    2. 2TYPETelephone ← “555-0100”
    3. 3CLICKLarge
    4. 4TYPEPreferred delivery time ← “19:30”
    5. 5CLICKBacon
    6. 6CLICKOnion
    7. 7TYPEE-mail address: no value in the goal, skipped
    8. STOPneeds_input: “E-mail address” needs a value the goal doesn't give. Nothing invented, nothing submitted.

    8 Jev calls · 7.3 s · $0.0012 at OpenRouter prices

    • Asks before it's hard to undoClicks that buy, pay, send, post or delete stop and wait for you. From the side panel you get an Allow button; Claude gets the pending click and asks you.
    • Never sees your passwordsPassword and file-upload fields are left out of the element list, so neither Jev nor Claude can type into them.
    • Treats pages as dataEvery request tells Jev that page text is untrusted. Jev can only choose from options the code offered.
    • Stays on your computerThe bridge to Claude listens on 127.0.0.1 only and accepts only the extension. Block any site, such as your bank, in the settings.
    • Has limitsEvery task stops at a number of actions, seconds and dollars you choose.

    Bring your own key, or use ours

    Same extension, same MCP server. You choose where Jev's calls are billed in the extension's settings.

    Open source

    $0 plus OpenRouter's price
    • MIT license: use it, change it, ship it
    • Your own OpenRouter key; you pay OpenRouter directly
    • Or point it at TypeSafe or any compatible endpoint
    Recorded taskTimeWith your keyWith credits
    Search Wikipedia and open an article (4 Jev calls, 1 typed value)4.9 s$0.0018$0.0092
    Fill a 6-field order form (8 Jev calls, 3 typed values)7.3 s$0.0012$0.0058

    At these rates $5 of credits covers about 540 to 860 tasks like these. Pages with many links cost more per step, because Jev is priced per token read.

    Set up in three steps

    Install the extension

    Download it, unzip, and load the folder at chrome://extensions with Developer mode on. The Chrome Web Store listing is on its way.

    Download (.zip)

    Add it to Claude

    Claude Code:

    claude mcp add jev-browser -- npx -y https://jevbrowsercontrol.com/downloads/jev-browser-control-mcp-0.2.0.tgz

    Claude Desktop and other clients: see the docs.

    Choose who pays for Jev

    Paste an OpenRouter key, or a key from your dashboard, in the extension's settings. Then ask Claude to use the browser.