Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 locale). Needs app_id.).

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). filter is a URL regex (e.g. 'v2/search').

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). replace:true (default) replaces all rules; an empty list clears mocking.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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