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 thatrevyl 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 underdevice_sessionand itsaction.core: the device tools,start_dev_loop,manage_tests, andmanage_builds. Theiractionpicks the operation andparamstakes that flat tool’s inputs; for example,manage_testswith actionruntakesrun_test’s inputs inparams.full:coreplusmanage_workflowsand the module, script, tag, file, and variable tools.
Branch and build inputs
MCP inputs name the build choice withbuild_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_dirorREVYL_PROJECT_DIRfirst, 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, ordefault_branch), andgit_branch_name, the Git branch the call consulted.default_branchwith agit_branch_namemeans that Git branch couldn’t be used and the app’s default branch ran.
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 withcreate_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_idselects 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_infoomitssession_index.- Phone screenshots return no
screen_token; Web screenshots retain their local observation token. - On phones,
interactcan’t ground a drag between two targets; describe the drag withstrategy="instruction"instead.
interactkeeps 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_indexnames 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.