Skip to main content
The Revyl MCP server exposes tools across the following categories. Device action tools use grounded targeting by default — describe the element in natural language (target="Sign In button") and coordinates are resolved automatically. You can also pass raw x, y as an override.

Profiles

The tools below are the flat set that revyl mcp serve registers with no --profile. Profiles expose fewer, grouped tools:
  • dev (recommended in MCP setup): focused setup, dev-loop, and device tools, with sessions under device_session and its action.
  • core: the device tools, start_dev_loop, manage_tests, and manage_builds. Their action picks the operation and params takes that flat tool’s inputs; for example, manage_tests with action run takes run_test’s inputs in params.
  • full: core plus manage_workflows and the module, script, tag, file, and variable tools.

Branch and build inputs

MCP inputs name the build choice with build_selection. See How a run picks its build for the model.
  • A choice passed to one call overrides the saved one for that call only. It never saves a default or pins a branch.
  • On Default branch, with no branch passed or saved, tools try the Git branch of project_dir or REVYL_PROJECT_DIR first, then the app’s default branch; see MCP setup. Only the Git branch falls back; a branch you name or save, or a pinned or exact build that’s no longer available, fails.
  • Run and session results name what ran: branch_name, build_id, build_version, branch_source (git_branch, explicit_branch, or default_branch), and git_branch_name, the Git branch the call consulted. default_branch with a git_branch_name means that Git branch couldn’t be used and the app’s default branch ran.
In core and full, the test, build, and workflow tools below are actions of manage_tests, manage_builds, and manage_workflows, such as run_test as manage_tests action run. In dev, device_session with action start takes start_device_session’s branch and build inputs. If you pass a branch and an exact build, the build must belong to that branch. MCP tools can’t rename or pin branches or set the default branch; use the CLI or the dashboard (Manage branches).

Device Session

Targeting a Session

Create a Web app with create_app(name="My Web App", platform="web"). Then start_device_session(platform="web", app_id="YOUR_WEB_APP_ID") selects the app’s latest build. Pass build_version_id to select a specific URL or managed bundle build, or url="https://example.com/" to create or reuse a URL build before starting. Web always requires app_id; session start takes no project input. Managed bundles run in an isolated app container beside Chrome. viewport accepts width, height, and device_scale_factor. Use device_type(text_env="PASSWORD_ENV_NAME", ...) for private password input without putting its value in tool arguments or output. Every tool that acts on a device session accepts an optional session_id next to session_index. Pass the session_id that start_device_session or list_device_sessions returned whenever more than one session may be live, for example when several agents share one MCP server:
  • session_id selects exactly that session and never falls back to the active one. It also works for a session this server did not start or list. Such a session has no local index, so:
    • get_session_info omits session_index.
    • Phone screenshots return no screen_token; Web screenshots retain their local observation token.
    • On phones, interact can’t ground a drag between two targets; describe the drag with strategy="instruction" instead.
  • interact keeps every step on the session it started with. If that session ends partway through, the call fails instead of moving to another device.
  • If you pass both and session_index names a different session, the call fails with an error that names both targets.
  • With neither, tools use the active session, as before.
  • get_session_report(session_id=...) also works after the session has ended.

Device Actions

Device Controls

For Web keyboard checks, use device_key(key="Escape"), device_key(key="Tab"), device_key(key="Enter"), or a chord such as device_key(key="Shift+Tab") or device_key(key="Meta+K"). Named keys are Enter (Return), Backspace, Tab, Escape (Esc), Delete, Space, ArrowUp/Down/Left/Right, Home, End, PageUp, and PageDown. Chords accept distinct Ctrl, Alt, Meta, or Shift modifiers and one named key or ASCII letter/digit. Bare letters/digits and function keys are rejected. Phone Enter/Backspace and Return/Delete aliases are unchanged. device_scroll(direction="down", amount=600) scrolls toward later content; directions are up/down/left/right and amount is 1–16384 pixels (default 600). Optionally pass target or paired x/y; with neither it uses the viewport center. device_select(option_label="Canada", target="Country") matches one enabled native HTML select option by its exact label, not value attribute. Custom dropdowns need normal taps or keys. Both tools refuse phone sessions without sending an action. All three tools accept session_id/session_index; scroll and select also accept an optional screenshot screen_token.

Live Steps

Vision

App Management

Diagnostics

Test Management

Workflow Management

Module Management

Tag Management

Variables and Environment

Build Management

Script Management

Dev Loop