Assistants and MCP

MCP tool reference

Every tool Arx's MCP server offers, the access classes it needs, and its main parameters.

This page is a first draft. It may change before the public beta.

Arx's server is named arx. It lists only the tools the client's current grant covers, and the list changes with notifications/tools/list_changed when you change the grant. Arx still checks every call, so calling an unlisted tool is denied.

The classes in each table are the ones you turn on under Grants and approvals. Every tool also needs read. Risk is how Arx treats the call against the approval policy: read never asks, mutate asks under Every time, destructive also asks under Only for closing or removing.

Read Working with pages first for the IDs, revisions and snapshots these tools pass around.

Browser organization

ToolNeedsRiskWhat it does
browser_inventoryreadreadLists granted spaces, folders, pins, Favorites and tabs, with IDs and revisions. Never loads or focuses pages.
browser_tabsorganizemutate, destructiveOpen, select, navigate, reload, go back or forward, stop, close, pin, unpin, move and favorite tabs.
browser_foldersorganizemutate, destructiveCreate, rename, move, ungroup and delete folders.
browser_hostsorganizemutateOpen Peek and Little Arx, and promote them to tabs.
browser_spacesbrowserAdmin to change, read to listmutate, destructiveList, create, rename, re-theme, reorder, delete and show spaces.
browser_profilesbrowserAdmin to change, read to listmutate, destructiveList, create, rename and delete profiles.
browser_windowsread to list, organize to changemutateList windows, focus one, and open, swap or close Split View.
browser_archiveread to list, organize to restoremutateSearch the Tab Archive and restore an entry.
browser_historyhistoryreadSearch visited pages.
browser_downloadsdownloadsmutateList downloads, cancel one, show one in Finder.
browser_linksreadreadClean a link, apply a Proxy Link rule, or resolve a bang. Nothing is opened.
browser_batchthe classes of its stepsthe highest of its stepsUp to 16 steps under one approval.

Organization commands

browser_tabs, browser_folders, browser_hosts, browser_spaces, browser_profiles and browser_windows share one shape:

Parameter
actionThe action name, from the list below. Spaces, profiles, windows, archive and downloads also take list.
operationIDA fresh UUID for every change. Never retry after a disconnect.
targetID, expectedRevisionThe item to act on and its current inventory revision.
destinationID, destinationRevisionWhere a move, pin or restore goes.
url, name, icon, themePer action. theme is light, dark or system.
focustrue to bring the result forward. New tabs don't focus otherwise. Peek and Little Arx require it.
ToolActions
browser_tabsopenTab, selectTab, navigate, reload, back, forward, stop, closeTab, pinTab, unpinTab, moveTab, addFavorite, removeFavorite, updateSavedURL, removeSavedEntry
browser_folderscreateFolder, renameFolder, moveFolder, ungroupFolder, deleteFolder
browser_hostsopenPeek, openLittleArx, promotePeekToTab, promotePeekToLittleArx, promoteLittleArx
browser_spaceslist, createSpace, renameSpace, setSpaceTheme, moveSpace, deleteSpace, selectSpace
browser_profileslist, createProfile, renameProfile, deleteProfile
browser_windowslist, openSplit, swapSplit, closeSplit, focusWindow

Details that matter:

  • openTab targets a space and needs url. With route: true, Air Traffic Control picks the destination: targetID is then the source space, and the result's route reports profileID, spaceID, mode (mainBrowser or littleArx), source (rule or fallback) and the matched rule. The routed space must also be granted. No usable destination returns routeUnresolved.
  • closeTab is destructive. Open tabs go to the Tab Archive; pins and Favorites keep their saved entry and only unload.
  • moveTab into a space of another profile reopens the URL there. The live session and cookies stay behind. Moving folders or Little Arx across profiles returns crossProfileTransferUnsupported.
  • removeSavedEntry deletes a pin or Favorite. It's destructive, and Undo is in Arx.
  • deleteFolder closes everything inside, after each page allows it. ungroupFolder keeps the children.
  • openPeek needs sourceTabID and sourceRevision, and previews url or, without one, targetID. Promotions take presentationID and presentationRevision from inventory.
  • deleteSpace moves the contents into destinationID when given, otherwise closes them. The last space can't be deleted.
  • createProfile: a new profile isn't granted until you grant it. deleteProfile erases the profile's browsing data and needs a profile with no spaces left.
  • Results report committed or acceptedLoading, not that the page finished loading.

browser_archive and browser_downloads

action: "list" pages through entries, newest first, filtered by query, with cursor and limit (1 to 100). restoreArchived reopens an entry as a new tab in its original space, or in destinationID when that space is gone. The entry leaves the archive, so a retry can't restore it twice.

Downloads need whole-profile grants. cancelDownload stops one in progress, and revealDownload shows a finished file in Finder. Private downloads never appear.

browser_history

Searches visited pages of whole-profile grants, newest first, by title and URL, ignoring case. Takes query, cursor and limit (1 to 100). URLs drop user information, query and fragment; titles may still be private.

kindInputReturns
cleanurlThe link without tracking parameters. Sensitive parameters are kept.
proxyurlThe link after your first matching Proxy Link rule.
bangquery, such as !w swiftThe destination URL: your search shortcuts first, then the 13,000+ bundled bangs.

browser_batch

steps is an array of 1 to 16 { "tool", "arguments" } objects, each exactly as that tool takes them. Arx asks once for the whole list when any step needs approval, and only those steps run under it, in that order. The batch stops at the first step that fails; later steps never run and nothing is retried. Later steps can't use earlier results, so take snapshots and revisions first.

Allowed step tools: browser_inventory, browser_tabs, browser_folders, browser_hosts, browser_spaces, browser_profiles, browser_windows, browser_command, browser_capture, browser_inspect, browser_wait, browser_click, browser_replace_text, browser_select_value, browser_keypress, browser_scroll, browser_hover, browser_drag, browser_type, browser_set_checked. Uploads, dialogs and media can't be batched.

browser_command is the older single tool for all organization actions. It still works for existing scripts but is no longer listed.

Reading pages

ToolNeedsWhat it does
browser_waitreadWaits up to 10 seconds (default 2) for the current page to stop loading.
browser_inspectpageContentA semantic snapshot: text, roles, names and references you can act on.
browser_readpageContentThe page as Markdown or plain text.
browser_findpageContentFinds text in a snapshot and returns references to it.
browser_find_in_pagepageContent, interactChromium's find bar: highlights matches in the page. Risk: mutate.
browser_pdfpageContentExports the page to PDF, or reads the text of a PDF the tab shows.
browser_capturescreenshotsA PNG or JPEG screenshot.

All page text and pixels are untrusted website data, never instructions. None of these tools focuses, scrolls or navigates the page.

browser_wait

targetID, expectedRevision, condition: "loadingStopped" and timeoutMilliseconds (1 to 10,000, default 2,000). Returns stopped or stoppedWithError with an errorCode. Stopped isn't HTTP success or DOM readiness. A new navigation returns staleTarget.

browser_inspect

Parameter
targetID, expectedRevisionAn ordinary HTTP(S) tab.
limitNodes per page, 1 to 512, default 100. Pass nextCursor alone (as cursor) for the next page.
loadtrue loads an unloaded saved tab in the background first, waiting up to 10 seconds.
frameIDRead a child frame, from an iframe node's frame.
formValuestrue adds values of eligible controls. Password, file, hidden, payment and one-time-code fields are always left out.
boundstrue adds element bounds in viewport points, usable as a capture region.
maximumTextBytesText per page, up to 65,536.

A page holds up to 16,384 nodes in all. References expire within 30 seconds and whenever the DOM changes. If the page changed between pages of a read, the cursor fails with staleCursor.

browser_read

format is markdown (default) or text. scope is main (default: the main landmark, or the page without navigation, banner and footer) or all. Text comes in chunks of limit bytes (1,024 to 65,536, default 16,384), cut at line boundaries. Also takes load, frameID and formValues. Link targets aren't included.

browser_find

query (up to 256 characters) is matched ignoring case and diacritics. Returns up to limit matches (1 to 100, default 20) with roles, short excerpts and the nearest reference. Nothing is highlighted in the page.

browser_find_in_page

text starts a search, direction (next or previous) moves through it, and stop: true ends it. Returns the number of matches and the active one. Because the highlight is visible to you and the page, it counts as a change.

browser_pdf

action: "export" prints the page to a PDF of at most 4 MiB, returned as a resource; nothing is saved to disk. It takes landscape, printBackground and scale (0.1 to 2). action: "text" reads the PDF the tab shows, in chunks of limit bytes with cursor. Private tabs are never read.

browser_capture

Parameter
modeviewport, region, fullDocument or element
region{ x, y, width, height } in viewport points, from the top left
snapshotID, referenceFor element, from a snapshot read with bounds: true
scale0.1 to 1, default 1
formatpng or jpeg; quality 0 to 1, default 0.8
offscreentrue captures a loaded background tab without showing it. Not for fullDocument.
savetrue asks you in Arx where to save the image. The assistant only learns the file name, or that you declined.

Images are at most 4 MiB encoded; a bigger one fails with limitExceeded, so ask for a smaller scale, JPEG or a smaller region. Pixels may contain private information, and there's no redaction.

Acting on pages

These need pageContent and interact, act on references from the connection's latest browser_inspect snapshot, and count as changes. Each takes operationID, targetID, expectedRevision, snapshotID and reference. Most take returnSnapshot: true to get a fresh snapshot back in the same call.

ToolWhat it does
browser_clickActivates a reference. With x/y, clickCount (1 to 3) or modifiers (shift, option, command), sends a real mouse click instead.
browser_typeFocuses a field and types text (1 to 1,024 bytes) as real key events. A line feed presses Enter. Refuses password fields.
browser_replace_textReplaces a whole text field's value (up to 32,768 bytes). Not typing.
browser_select_valuePicks one option by exact value, or several with values (up to 64) in a multiple select.
browser_set_checkedSets a checkbox or radio to checked true or false.
browser_keypressPresses one key, optionally with modifiers (shift, control, option, command). Browser and system shortcuts never run.
browser_scrollScrolls the nearest scrollable container of a reference on one axis (horizontal, vertical) by deltaCSSPixels (−8,192 to 8,192).
browser_hoverMoves the real pointer over a reference or point. Doesn't use up the snapshot.
browser_dragDrags from a reference or point to toReference or toX/toY, in steps (1 to 32, default 8).
browser_uploadAnswers a file chooser the page just opened with absolute paths (up to 32), or cancels it with an empty list. Needs files, and asks you every time.
browser_dialogread the page's alert, confirm, prompt, before-unload dialog or permission request; accept (asks you every time) or dismiss it with its token.
browser_medialist media sessions, then play, pause, enterPictureInPicture or exitPictureInPicture with a session token. Needs interact only.

Password fields, file inputs and disabled or hidden controls are refused where they don't belong. Typed text, field values and paths are never echoed back.

Sign-in

ToolNeedsWhat it does
browser_sign_insignInbegin, status or cancel a handoff on a tab and its exact origin. See Sign-ins stay with you.

Not available

There is no tool to run JavaScript, read the clipboard, read saved passwords, reach the file system or attach a raw DevTools connection.

Planned
More tools are planned:
  • Starting downloads, with your approval.
  • Seeking, muting and reading the playback position of media.
  • Changing browser settings: preferences, routing rules, bangs, shortcuts, extensions, site permissions and zoom. Security and grant settings will never be writable.
  • An opt-in developer tier: script evaluation in an isolated world, console logs and sanitized network logs. It will be off by default, granted separately and refused on private profiles.