- App-side tools registered at runtime by
registerMcpInteractionTools()inside your Flutter app (debug mode only). Defined inlib/core/mcp/mcp_interaction_tools.dartafterroveflow init. - flutter-inspector MCP tools provided by the
flutter_inspector_mcpbinary — process control, screenshots, hot reload.
App-side tools
Registered byregisterMcpInteractionTools() via MCPToolkitBinding. These run inside your app’s Dart isolate.
navigate_back
Pops the current route, bottom sheet, or dialog via your app’s navigate.pop() helper.
- Arguments: none.
- Returns:
"Navigated back".
tap_by_text
Finds a widget whose visible text matches exactly and dispatches a tap at its center.
- Arguments:
text(string, required) — exact visible text of the widget to tap.
- Returns:
"Tapped text \"<text>\" at (x, y)"on success,"Error: widget with text \"<text>\" not found"otherwise.
RichText.text.toPlainText() against the argument. Partial matches are not supported; pass the full rendered string.
tap_by_key
Finds a widget with a matching ValueKey string and dispatches a tap at its center.
- Arguments:
key(string, required) — the string value of theValueKeyon the widget.
- Returns:
"Tapped key \"<key>\" at (x, y)"on success,"Error: widget with key \"<key>\" not found"otherwise.
preferred_keys. See Using ValueKeys.
scroll_to_text
Scrolls the nearest Scrollable ancestor until a widget with the given text becomes visible.
- Arguments:
text(string, required) — exact visible text to scroll to.
- Returns:
"Scrolled to text \"<text>\""on success, error string otherwise.
tap_at
Dispatches a tap at raw logical pixel coordinates. Last-resort navigation — flagged as fragile when used.
- Arguments:
x(string, required) — logical x coordinate.y(string, required) — logical y coordinate.
- Returns:
"Tapped at (x, y)".
swipe
Dispatches a swipe gesture from a start point to an end point over N intermediate pointer events. Used for horizontal scrolling of date pickers, carousels, and similar.
- Arguments:
start_x(string, required) — start logical x coordinate.start_y(string, required) — start logical y coordinate.end_x(string, required) — end logical x coordinate.end_y(string, required) — end logical y coordinate.steps(string, optional, default10) — number of intermediate points.
- Returns:
"Swiped from (start_x, start_y) to (end_x, end_y) in <steps> steps".
flutter-inspector MCP tools
Provided by theflutter_inspector_mcp binary pointed at from .mcp.json. These tools run outside your app process and connect to the live VM service.
| Tool | Purpose |
|---|---|
get_vm | Preflight check — confirms the VM service is reachable at the configured port. |
hot_reload_flutter | Triggers a hot reload. Used once if dynamic tool registration looks incomplete. |
runClientResource | Invokes a registered app-side tool (navigate_back, tap_by_text, etc.) by name. |
ReadMcpResourceTool (visual://localhost/view/screenshots) | Captures a screenshot; returns a blob path the agent adds to its screenshots array. |
roveflow-runner agent declares only the tools it is allowed to call — the full list is in .claude/agents/roveflow-runner.md.
Tool call logging
Every MCP call is written to the scenario’scalls.jsonl with ts, tool, args, and result.