Manos MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List all available local devices (Android emulators/devices via adb, iOS simulators via simctl). Returns id, platform, name, OS version, and state. |
| inspect_screenA | Get the current screen's view hierarchy as compact JSON with stable element ids. Use the 'id' field with act tools (tap/input_text/...), or target by text/resource-id. Copy text verbatim — never retype from a screenshot. |
| take_screenshotA | Capture a PNG screenshot of the current device screen. |
| run_flowA | Run a Maestro flow (delegates to the maestro CLI). Provide exactly one of: yaml (inline), files (paths), or dir. Optional include_tags/exclude_tags (for dir) and env vars. |
| cheat_sheetA | Return Maestro flow syntax guidance and best practices for writing/exporting flows. |
| device_capabilitiesA | Report which actions are supported on a device (full/partial/unavailable) with the backend and any caveats. Check this before relying on a platform-specific action. |
| tapA | Tap an element (by id/text/resource_id/accessibility) or absolute coordinates. Returns the resulting screen state (act+observe) so you don't need a separate inspect call. |
| long_pressA | Long-press an element or coordinates for a duration (ms). |
| input_textA | Type text into the focused field. Optionally target a field first (id/text/resource_id) to tap it before typing. |
| press_keyA | Press a hardware/system key. Android: back, home, enter, tab, delete, search, menu, volume_up, volume_down, app_switch, power. iOS: enter, delete, tab, space, escape, home, lock, siri. |
| swipeA | Swipe by direction (up/down/left/right) or between two coordinate points. Direction swipes are centered on the screen. |
| assertA | Assert an element is visible or not visible on the current screen. Returns pass/fail without polling (use wait_for to wait). |
| wait_forB | Poll the screen until an element becomes visible or not_visible, or timeout. Replaces fixed sleeps — fast when ready, patient when not. |
| find_elementsA | Search the current screen for elements matching a query. Returns matching elements (id, bounds, text, etc.) — handy to disambiguate before acting. |
| find_textA | OCR the current screenshot and return on-screen text with pixel bounding boxes — finds elements the accessibility tree misses (styled buttons, canvas/Flutter/game UIs, WebViews). Optionally filter by a query. Tap a result with tap{text, ocr:true}. |
| launch_appA | Launch an app by bundle id (iOS) / package name (Android). Optionally clear state first. |
| stop_appC | Force-stop / terminate an app. |
| clear_app_stateA | Reset app state. Android: full data wipe (pm clear). iOS: resets permissions (full data wipe needs reinstall). |
| open_deeplinkB | Open a deep link / universal link URL on the device. |
| set_permissionA | Grant or revoke a runtime permission for an app. Aliases: camera, microphone, location, contacts, photos, notifications, calendar, etc. |
| set_appearanceB | Switch the system appearance between light and dark mode. |
| set_orientationA | Set device orientation (portrait, landscape-left, landscape-right, upside-down). Android only; iOS simulators must be rotated via the Simulator menu. |
| set_localeA | Set app locale (BCP-47, e.g. 'fr-FR'). Android: per-app, requires API 33+. iOS: applied by relaunching the app. Provide app_id. |
| set_networkA | Toggle wifi/cellular/airplane mode. Android only (emulator/device); iOS simulators share the host network (use Network Link Conditioner). |
| set_locationA | Set the simulated GPS location. Android: emulator only. iOS: any simulator. |
| set_font_scaleA | Set text size for accessibility testing. scale 1.0 = default. Android sets font_scale directly; iOS maps to the nearest Dynamic Type size. |
| set_status_barA | Override the status bar (time, battery, signal) for clean screenshots. iOS: rich (simctl). Android: clock/battery/signal via SystemUI demo mode. |
| push_notificationA | Deliver a push notification. iOS: injects an APNs payload via simctl push. Android: unavailable (needs FCM server key + token). |
| set_conditionsA | Apply multiple device conditions in one call — the edge-case states where bugs hide. Use a named preset and/or explicit fields (explicit overrides the preset). Each condition reports applied/skipped/failed (unsupported ones are skipped with a reason, not a failure). Presets: reset (Restore defaults: light mode, 1.0 text, online.); screenshot (Clean marketing state: light mode + a pristine 9:41 status bar.); accessibility (Accessibility stress: largest text + dark mode.); offline (No connectivity (airplane mode / radios off).); dark (Dark appearance.); international (Foreign locale (defaults to fr-FR; override with |
| get_logsA | Fetch recent device logs (Android logcat / iOS unified log) with automatic crash & ANR detection. Filter by app_id, substring, time window, and line cap. |
| a11y_auditA | Audit the current screen for accessibility issues: undersized touch targets, unlabeled interactive controls, and duplicate labels. (Color-contrast needs pixels and is not evaluated.) |
| network_startA | Capture decrypted HTTP, filtered to specific endpoints. Android: hooks OkHttp via Frida in a debuggable app (app_id required; needs frida-server). iOS simulator: routes the sim through mitmproxy with a simctl-trusted CA (app_id optional; temporarily sets the macOS proxy, restored on stop). |
| network_requestsA | Return captured HTTP exchanges (method, url, status). Compact by default; set include_headers/include_body for detail. Filter by URL regex and limit count to avoid flooding. |
| network_clearA | Clear the captured-request buffer without stopping the capture. |
| network_stopA | Stop capturing (detach Frida / stop mitmproxy and restore the macOS proxy). |
| network_mockA | Override API responses to test hard-to-reproduce states (Android). Each rule matches requests by URL regex (+ optional method) and can override the status/headers, replace the body, regex-rewrite the live body (change one field, keep the rest), or inject latency. First match wins; rules hot-reload; capture keeps logging (mocked exchanges flagged). Android (Frida/OkHttp): call network_start with app_id first — mocking rides the capture hook (abort not yet supported). iOS response mocking is in development (network_start still captures). |
| start_recordingA | Begin recording subsequent act tools as a session that can be exported to a replayable Maestro flow (export_flow) or an annotated HTML report (export_report). Set report=true to also screenshot after each action for the report. |
| stop_recordingA | Stop recording the current session (keeps recorded steps for export_flow). |
| export_flowA | Export the recorded session as a replayable Maestro flow (YAML) plus a human-readable report. Run it later with run_flow. |
| export_reportA | Write a self-contained HTML report of the recorded session — a step timeline with screenshots (if report capture was on) plus an appendix with the replayable flow, captured network requests, and recent logs/crashes. Returns the file path. Best with start_recording(report=true). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryanperkins/Manos-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server