ExecBro
← back to docs

Available Tools

Complete reference for all MCP tools provided by ExecBro.

Usage Guide

ToolDescription
get_usage_guideGet recommended workflows for all tools. Call without params for overview, with a topic (setup, inspect, layout, interact, logs, network, state, bundle) for the full guide

Connection & Logs

ToolDescription
scan_metroScan for Metro servers and auto-connect. Called automatically by the agent at session start
connect_metroConnect to a specific Metro port. Usually called automatically — use manually only for non-standard ports
disconnect_metroDisconnect from all Metro servers. Frees the CDP slot. Reconnect with scan_metro
get_appsList connected apps. Run scan_metro first if none connected
get_connection_statusGet detailed connection health, uptime, and recent disconnects
ensure_connectionVerify/establish connection with health checks
get_logsRetrieve console logs (filtering, truncation, summary). Use source="native" for device logs — Android logcat and iOS os_log, filtered to your app — which surface crashes, ANRs and out-of-memory kills that never reach the JavaScript console. Native results are grouped into events, so a crash backtrace costs one row instead of forty
search_logsSearch logs for specific text (truncation)
get_log_detailsExpand one log event into its full payload — a complete native backtrace, JavaScript stack trace, or oversized message. Takes an id from get_logs
clear_logsClear the log buffer
list_devicesList every iOS simulator, Android emulator, and connected physical device on the host machine, in one structured response
logboxInteract with React Native's LogBox overlay (dev mode only) — dismiss all entries and return their content, or push a message to the error banner

Network Tracking

ToolDescription
get_network_requestsRetrieve network requests (filtering, summary)
search_networkSearch requests by URL pattern
get_request_detailsGet full details of a request (headers, body with truncation)
clear_networkClear the network request buffer

App Inspection & Execution

ToolDescription
execute_in_appRun a JavaScript expression inside the app. The store, Apollo client, router and a working require are already resolved and in scope, so you rarely have to hunt for globals first. Large results come back shaped rather than cut off mid-string: arrays and objects are summarised with the real counts intact, so you can see what is there and ask again for the part you want
list_debug_globalsDiscover available debug objects (Apollo, Redux, Expo Router, etc.)
inspect_globalInspect a global object to see its properties and callable methods
app_requestSend an HTTP request from inside the running app, as the signed-in user. It travels through the app's own network stack, so certificates, proxies and headers behave exactly as they do in normal use, and the access token is found in the app rather than pasted into the conversation
reload_appReload the app (auto-connects if needed). Use sparingly — Fast Refresh handles most changes
redux_get_stateRead state from the Redux store bound to the app's Provider, resolved live via the React fiber tree
redux_dispatchDispatch a Redux action to that same store, triggering useSelector subscribers and React re-renders

Layout & Component Inspection

ToolDescription
get_screen_layoutScreen map of visible components with positions, sizes, and text content. Use extended=true for layout styles
get_component_treeFull React fiber tree. Use structureOnly=true for compact output
find_componentsFind components by name pattern. Use includeLayout=true for styles
inspect_componentInspect a component's props, state (hooks), and children
inspect_at_pointInspect component at (x, y) coordinates — frame, props, styles
get_imagesAccess shared image buffer (screenshots, tap verification frames)
get_pressable_elementsEvery element that is tappable right now, with real coordinates. An element missing from this list means "not on screen yet", not "not in the app"
get_screen_stateScreenshot-free snapshot of the current screen: active route and params, blocking overlays (sheets, modals, alerts), and every on-screen element in one call
measureOn-screen geometry {x, y, width, height} for a named React component instance, via measureInWindow on the matched fiber

Bundle Tools

ToolDescription
get_bundle_statusGet Metro bundler status and build state
get_bundle_errorsGet compilation errors with file locations
get_refresh_statusDid the JS runtime accept a Fast Refresh (HMR) update since a given time? Returns lastUpdateAt, updateCount, and recent updates

UI Interaction (Cross-Platform)

ToolDescription
navigateMove the app to another screen and confirm it actually got there. Expo Router apps are addressed by path and React Navigation apps by screen name; a name that does not exist is refused up front, with the closest real names offered, instead of quietly doing nothing
tapUnified tap — auto-detects platform, tries fiber tree → accessibility → OCR → coordinates. Accepts text, testID, component name, or pixel coordinates
swipeUnified swipe — auto-detects platform and routes to the correct backend. Accepts screenshot pixel coordinates. Use for scrolling lists (especially virtualized FlatList/SectionList), paging carousels, and pull-to-refresh
input_textWrite text into a field and confirm it landed. Give it a testID and it focuses the field itself — no separate tap — then reads the value back and compares it exactly, retrying once before reporting a mismatch. If the target matches several inputs it refuses and lists them with their labels rather than guessing, which matters on forms where every field shares one placeholder. Cyrillic, Chinese and accented Latin all work, none of which the keyboard drivers can type
ocr_screenshotExtract all visible text with tap-ready coordinates (works on iOS/Android)
dismiss_keyboardBlur the currently focused TextInput, dismissing the on-screen keyboard

iOS (Simulator)

ToolDescription
ios_screenshotTake a screenshot from an iOS simulator
ios_launch_appLaunch an app by bundle ID
ios_open_urlOpen a URL (deep links or web URLs)
ios_terminate_appTerminate a running app
ios_boot_simulatorBoot a simulator by UDID
ios_input_textType text into the already-focused field via the simulator driver (requires IDB/AXe). A fallback: input_text handles focusing and verification, and reaches text this driver cannot type
ios_buttonPress hardware button: HOME, LOCK, SIRI (requires IDB)

Android (ADB)

ToolDescription
android_screenshotTake a screenshot from an Android device/emulator
android_launch_appLaunch an app by package name
android_list_packagesList installed packages (with optional filter)
android_long_pressLong press at specific coordinates
android_input_textType text at the current focus point via adb. A fallback: input_text handles focusing and verification, and reaches text adb cannot type
android_key_eventSend key events (HOME, BACK, ENTER, etc.)

Account & License

ToolDescription
get_license_statusYour installation ID, license tier, and this month's usage against the free cap
activate_licenseActivate a Pro license using an activation token from your dashboard, linking your account to this MCP installation
delete_accountPermanently delete your account and reset this installation. Requires explicit confirmation
send_feedbackReport feedback about the ExecBro tools themselves — one that behaved incorrectly, was confusing, or is missing