Rove

io.github.noncelogicPublished by GitHub account noncelogicv1.18.0Updated Nov 3, 2026

Rove — supervised browser for AI agents. Your agent drives; a human watches, takes over.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingBrowser Automation

Overview

AI-generated overview

Rove gives an AI assistant a hosted Chromium browser it drives while a person watches live, takes over, and hands control back.

What you can do
  • Start, list and close supervised browser sessions, and create one-time viewer links so a person can watch or take over.
  • Navigate pages, read the accessibility tree, take screenshots, click, fill fields, scroll, read element text and run JavaScript.
  • Manage tabs: list, switch, close and wait for popups.
  • Handle sign-in: fill saved credentials and one-time codes without exposing them, request human help, and connect to sites using the Personal Agent Protocol.
  • Capture and fetch downloads in chunks, and restore pages after a crashed session.
  • Inspect or delete the browser profile, browsing history and passkeys, and check account plan, credits and purchases.
When to use it
Useful when an assistant must operate real websites that need sign-in, multi-step forms or human confirmation, and you want a person able to watch and intervene. Also fits one-off structured page extraction and download collection.
Requirements
Remote endpoint or the npm package run locally over stdio. Requires a Rove API key sent as a Bearer token in the Authorization header, or the ROVE_API_KEY variable; without one, the authenticate tool signs in by email magic link. OAuth-connected apps are already signed in. Supervised sessions need a live key, and usage consumes paid credits.
Before you install
The key grants access to a stored browser profile with cookies, history and passkeys, and tools can delete that profile, history or passkeys. Clicks and fills act on real sites and can submit, delete or buy; evaluate can change anything the page can. buy_credits may charge the owner's saved card. Viewer links and admission codes are one-time and should only go to the intended person.

Installation

In SourceWeft

  1. Open Rove in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.noncelogic%2Frove/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "rove": {
      "type": "http",
      "url": "https://api.roveapi.com/mcp"
    }
  }
}

README

This repository has no README.

Tools

42

start_supervised_session

Start supervised browser session

Start a supervised browser session: a hosted Chromium browser your agent drives while a person can watch live, take exclusive control and hand it back. It signs in with the browser profile this API key keeps, so cookies and sign-ins carry over between sessions. Next, call create_viewer_grant to get the person a viewer link. While the person holds control, agent actions are refused; after they hand back, call get_a11y_tree or screenshot before acting again. Later tools use this session unless you pass session_id. viewport_mode defaults to follow-human; use fixed when the page layout must stay at the agent viewport. Charged per minute. Needs a live key (rvp_live_).

Parametersegressviewport_mode

create_viewer_grant

Create viewer link

Create a one-time, origin-bound viewer link for a supervised session, for the person who will watch and take over. Give viewer_url to that person (one click opens the session). The admission_code in it works once and expires after expires_in_seconds. Never send passwords or other site credentials through chat: the person signs in themselves, in the viewer.

Parameterssession_id

request_human

Request human help

Pause a supervised session and ask a person to help. Explain what they need to do in reason. Returns waiting_for_human, the reason, human_wait_expires_at and a one-time viewer_url to give the person. Agent actions are refused until they return control. Repeating this request renews the viewer grant without extending the wait deadline.

Parametersreasonrequiredsession_id

navigate

Open URL

Open a URL in the session's browser and return the final URL and page title after redirects. In a supervised session the person watching sees the page. For a parked challenge (challenge_parked), use navigate on the same session to poll every 10 to 60 seconds with backoff, never in a tight loop. With no session_id and no active session, it creates an ordinary session that no one can watch or take over; call start_supervised_session first when a person may need to step in, for example to sign in. API docs: https://roveapi.com/docs.

Parametersurlrequiredpage_idsession_idtimeout_mswait_until

get_a11y_tree

Read page

Read the current page's content and controls, with element refs (such as e5) that click, fill, get_text and screenshot accept. After a person hands a supervised session back, this or screenshot is the fresh observation required before the next action. The page comes back as an accessibility tree: roles, names, values and states. On large pages it scopes itself to the main content; selector, max_depth, max_chars, visible_only and exclude_selectors narrow it further.

Parametersframepage_idselectormax_charsmax_depthsession_idrequiredvisible_onlyexclude_selectors

screenshot

Take screenshot

Capture the current page, or one element, as a PNG or JPEG. In a supervised session this is, like get_a11y_tree, a fresh observation after a person hands control back. With no session_id and no active session, pass url instead for a one-shot capture in a throwaway browser. API docs: https://roveapi.com/docs.

Parametersrefurlframeformatpage_idselectorfull_pagesession_id

click

Click element

Click an element by CSS selector, accessible label or a11y tree ref. A click can submit, delete or buy on the site, as a person clicking would. In a supervised session, a click that opens a popup makes the popup the current page.

Parametersrefframelabelbuttonpage_idselectorsession_idrequiredclick_countwait_after_ms

fill

Fill form field

Type text into a form field, found by CSS selector, accessible label or a11y tree ref. By default it clears the existing value first. Never fill in passwords or other credentials you were sent through chat; in a supervised session, hand the sign-in to the person in the viewer.

Parametersrefframelabelvaluerequiredpage_idselectorsession_idrequiredclear_first

fill_credential

Fill saved credential

Fill saved username and password fields in a supervised session without returning credential values. etld_plus_one identifies the saved credential site and must match the target page, including private suffixes. Requires agent control; frame targeting is refused. Optional selectors override the default username/email and password inputs.

Parametersframepage_idsession_idetld_plus_onerequiredpassword_selectorusername_selector

fill_otp

Fill saved OTP

Fill the current six-digit TOTP (SHA-1, 30-second step) into the focused main-page input in a supervised session without returning the code or seed. etld_plus_one identifies the saved credential site and must match the target page, including private suffixes. Requires agent control; frame targeting is refused.

Parametersframepage_idsession_idetld_plus_onerequired

interact

Click or fill by selector

Click an element or fill a field by CSS selector, as one tool: action is click or fill, and params carries selector (and value, for fill). click and fill take the same actions with labels, refs, frames and pages; prefer them.

Parametersactionrequiredparamssession_idrequired

get_text

Read element text

Read the text of one element, such as a price, a heading or a status message, by CSS selector or a11y tree ref.

Parametersreftrimframepage_idselectorsession_idrequired

scroll

Scroll page

Scroll the page, or one scrollable element, in a direction, for example to load more content or reach elements below the fold.

Parametersrefframeamountpage_idselectordirectionrequiredsession_idrequired

evaluate

Run JavaScript

Run a JavaScript expression in the page and return its result as JSON. The script can read or change anything the page can, including submitting forms. Refused on a site's pages while a Poppy Session with that site is connected (see poppy_status).

Parameterspage_idexpressionrequiredsession_idrequired

extract_schema

Extract fields from a URL

One-shot and unsupervised: open a URL in a throwaway browser and, for each key in schema, return the text that follows that key on the page (as in "Price: $10"), or null. Nothing persists and no one can watch; for pages behind a sign-in, start a supervised session and read them with get_a11y_tree or get_text. API docs: https://roveapi.com/docs.

Parametersurlrequiredschemarequiredwait_for_selector

list_downloads

List downloads

List this session's captured downloads as artifacts, with id, name, content_type, file_size_bytes, url and expires_at, plus download_errors for refused or failed captures. Use get_download with an artifact id to fetch its bytes. Defaults to this connection's active session.

Parameterssession_id

get_download

Fetch download

Fetch a captured download using its artifact_id from list_downloads, in chunks of at most 1 MiB. Returns session_id, artifact_id, content_type, data_base64, offset, total_bytes and next_offset. Decode each chunk separately and concatenate the bytes. Repeat with offset set to next_offset until next_offset is null. Defaults to offset 0 and this connection's active session.

Parametersoffsetsession_idartifact_idrequired

list_pages

List open pages

List the pages open in this session's browser, with page ids, opener, URL, title and status, and which page is current. Popups the page opened appear here. Does not count as a fresh observation.

Parametersafter_seqsession_idrequired

switch_page

Switch page

Make another open page current. Later actions without page_id run on it, and in a supervised session the viewer shows it.

Parameterspage_idrequiredsession_idrequired

close_page

Close page

Close an open page. If it was current, the session returns to the page that was current when it opened. The last open page cannot be closed.

Parameterspage_idrequiredsession_idrequired

wait_for_popup

Wait for popup

Wait for a popup opened by your last navigate, click, fill, scroll or evaluate, even one that has already opened, and return its page_id. In a supervised session the popup becomes current. In other sessions, call switch_page or pass page_id. A popup Rove blocks answers popup-blocked at once instead of waiting. After a human returns control, a popup they opened counts; pass after_seq to wait for a newer one.

Parametersafter_seqsession_idrequiredtimeout_ms

poppy_connect

Connect to a Poppy site

Declare this supervised session to a site that takes part in the Personal Agent Protocol (Poppy) as the person's agent: Rove reads https://<site>/.well-known/poppy.json, starts a signed-out Poppy Session and joins the browser to it, so the site admits the session instead of challenging it. A site without a valid poppy.json answers poppy-not-participating and is browsed as usual. While connected, changes (any request that isn't GET, HEAD or OPTIONS) and live-update sockets on the site are refused until the person signs in with poppy_sign_in and approves them. If this browser profile already holds the site's cookies or saved data, the answer is poppy-company-cookies-present: ask the person, then call again with replace_company_cookies: true. Follow next in every answer.

Parametersoriginrequiredscopespage_idreturn_tosession_idreplace_company_cookies

poppy_sign_in

Sign in to a Poppy site

Ask the person to sign in to a connected Poppy site and approve permissions for you (default poppy:read; poppy:write allows changes). Rove opens the site's own sign-in in a separate sign-in window in the supervised viewer; the person signs in there themselves, and you never see their password, codes or tokens. Then send the person a viewer link (create_viewer_grant), tell them what next says, and check poppy_status for the outcome.

Parametersscopessession_idpoppy_session_idrequired

poppy_status

Show Poppy connections

Show this supervised session's Poppy Sessions: their state, the permissions granted and in force, the requests Rove refused, the latest sign-in's outcome, and next, what to do now. Changes nothing.

Parametersafter_seqsession_idpoppy_session_id

poppy_disconnect

Disconnect a Poppy site

End a Poppy Session. Rove removes the site's cookies and saved data from this browser before the site is used without Poppy again (poppy_status shows cleanup done). With sign_out: true it also deletes the person's stored approval for the site and revokes it there.

Parameterssign_outsession_idpoppy_session_idrequired

restore_pages

Restore or dismiss pages

Answer a supervised session's restore offer. When the previous session on this profile ended unexpectedly (crash, hang or restart), list_pages and the session status carry restore.available and the pages that were open; nothing reopens until you choose. restore reopens them (each through the target policy) and makes the recorded current page current; dismiss drops the offer.

Parametersdecisionrequiredsession_id

list_history

List browsing history

List the pages this API key's supervised browser profile visited, newest first, across sessions: URL, title, time, session id and whether the agent or a human held control. Sign-in callback codes and tokens are never stored. To reopen an entry, navigate to its url.

Parameterslimitquerybefore

clear_history

Clear browsing history

Delete this API key's supervised browsing history. Cookies, storage and open-pages restore are kept. Refused (profile-busy) while a supervised session on this key is running.

Takes no parameters.

delete_profile

Delete browser profile

Delete this API key's whole supervised browser profile: cookies, storage, history and any restore offer. The next session starts signed out. Refused (profile-busy) while a supervised session on this key is running.

Takes no parameters.

list_passkeys

List passkeys

List this API key's browser profile passkeys by site, including credential IDs and account labels. Private keys and other key material are never returned. No browser session is required.

Parametersrp_id

delete_passkey

Delete passkey

Delete one passkey from this API key's browser profile by its credential_id from list_passkeys. Returns deleted: false if absent. Refused (profile-busy) while a supervised session on this key is running; close it first.

Parameterscredential_idrequired

list_sessions

Show active session

Show which browser session this MCP connection is using: the session later tools act on when you omit session_id.

Takes no parameters.

close_session

Close session

End a browser session and release its browser; its open pages close. A supervised session's browser profile (cookies, history) is kept for the next session; delete_profile removes it. When it was this connection's active session, the next navigate or start_supervised_session starts a new one.

Parameterssession_idrequired

authenticate

Sign in by email

Sign in to Rove with your email when no API key is configured: sends a magic link, and once you open it this connection uses your live key. Supervised sessions need a live key; test keys (rvp_test_) run mock actions. Apps connected through OAuth are already signed in and cannot call it.

Parametersemailrequired

account_info

Show account

Show this account's plan, credit balance and whether this key may buy credits.

Takes no parameters.

buy_credits

Buy credits

Without arguments: shows Rove credit prices and whether this key may buy. With item_id: buys that credit pack and may charge the account owner's saved card, or returns a payment link for a person, within limits the owner set. Pass the same idempotency_key when retrying the same purchase. Without idempotency_key, the same call again in this MCP session returns the first purchase for 10 to 20 minutes; to buy the same pack twice on purpose, pass a new idempotency_key each time.

Parametersitem_idpaymentidempotency_key

get_credit_catalogue

Show credit prices

Shows Rove credit packs, subscription tiers and what an action or supervised minute costs. Never buys.

Takes no parameters.

get_credit_balance

Show credit balance

Shows this account's credits, exact to the millicredit, and whether this key may buy more and within what limits.

Takes no parameters.

get_purchase

Show purchase

Shows one purchase this key made and what to do next (for example, a payment link for a person).

Parameterspurchase_idrequired

list_purchases

List purchases

Lists purchases this key made, newest first.

Parameterslimitcursor

cancel_purchase

Cancel purchase

Cancels an unpaid purchase this key made, so its payment link stops working.

Parameterspurchase_idrequired

simulate_purchase

Simulate purchase (test keys)

Test keys only: moves a simulated purchase to paid, expired, failed or needs-authentication. Never charges.

Parametersoutcomerequiredpurchase_idrequired

Version history

4
  1. v1.18.0LatestOct 29, 2026
  2. v1.15.1Oct 26, 2026
  3. v1.15.0Oct 26, 2026
  4. v1.10.0Oct 13, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.