# Hoainho Podium MCP server

Source: https://glimind.com/server/mcp-registry%2Fio.github.hoainho%2Fpodium-mcp
Registry id: `mcp-registry/io.github.hoainho/podium-mcp`
Status: unknown

## Install

```json
{
  "mcpServers": {
    "hoainho-podium-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "podium-mcp"
      ]
    }
  }
}
```

Claude Code:

```sh
claude mcp add hoainho-podium-mcp-server -- npx -y podium-mcp
```

## Tools (50)

- `app_install`: Installs an app on an iOS simulator. Accepts a path to a .app directory or a .zip archive.
- `app_launch`: Launches an app on an iOS simulator by bundle ID.
- `app_list`: Returns the list of installed apps on a booted iOS simulator. Includes bundle ID, display name, and application type (User/System).
- `app_state`: Checks whether an app is installed and/or running on an iOS simulator. installed: exact
- `app_terminate`: Terminates a running app on an iOS simulator by bundle ID.
- `app_uninstall`: Uninstalls an app from an iOS simulator by bundle ID.
- `assert_not_visible`: Asserts an element/text is ABSENT. FAILS CLOSED: if absence cannot be verified (e.g. a WebView whose DOM
- `assert_text`: Asserts the given text is visible on screen (by-text shorthand for assert_visible). Same oracle ladder +
- `assert_visible`: Asserts an element/text is visible, via the oracle ladder (WebView-DOM > native a11y > Maestro).
- `canvas_inspect`: Lists canvas/WebGL objects (Pixi/Konva/Fabric/Phaser/Three/Babylon) as DOM-like elements with
- `canvas_resolve`: Resolves a fuzzy intent (e.g. "close", "settings", "✕") to a ranked, EVIDENCED canvas target
- `canvas_tap`: Resolves an intent to a single canvas target and TAPS it at absolute screen coordinates — the native-like
- `cheat_sheet`: Returns the bundled Maestro flow script cheat sheet (offline copy).
- `crash_get`: Reads a crash report by its id (filename from crash_list). For .ips files returns a parsed JSON header and the report body (first ~8000 chars, truncated flag se
- `crash_list`: Lists crash reports (.ips/.crash) from ~/Library/Logs/DiagnosticReports — plus the simulator's own container DiagnosticReports when udid is given — sorted newes
- `device_boot`: Boots an iOS simulator by UDID. Waits up to 30 seconds for the boot command to complete. Idempotent: booting an already-booted device returns ok with alreadyBoo
- `device_list`: Returns a merged inventory of available iOS simulators (udid, name, state, runtime) plus any adb-detected Android devices. If adb is absent, the android section
- `engine_call`: Invokes a C# component method on a game-engine object by reflection — the engine analog of firing a DOM event handler.
- `engine_inspect`: Lists game-engine (Unity/GL) objects matching a selector, each with absolute screen coordinates for tapping — DOM-like addressing with NO vision.
- `engine_swipe`: Swipes between two screen coordinates inside a game-engine view.
- `engine_tap`: Taps a game-engine object resolved by selector (engine-reported screen coords, no vision).
- `export_flow`: Exports a run_steps action sequence to a reusable Maestro flow (the engineer→QA bridge).
- `input_text`: Types text into the currently-focused element via an ephemeral Maestro flow.
- `inspect_screen`: Returns the current view hierarchy for a booted iOS simulator (podium's target platform).
- `metro_apps`: Lists React Native apps currently connected to a Metro bundler inspector. Returns CDP-style targets (id, title, webSocketDebuggerUrl). Returns a structured erro
- `metro_logs`: Reads console logs from a React Native app via the Metro CDP debugger. If webSocketDebuggerUrl is omitted, auto-discovers via metro_apps and uses the first conn
- `metro_network`: Captures network requests from a React Native app via the Metro CDP debugger (Network domain).
- `metro_state`: Reads app state from a React Native app by evaluating a JS expression in its runtime via the
- `notification_bar_clear`: Attempts to dismiss the React Native debug notification bar that sometimes appears
- `open_url`: Opens a URL on an iOS simulator (deep-links, https:// etc.).
- `orientation_get`: Returns the current orientation of a booted iOS simulator. Queries the native backend (mobilecli) when available for an exact answer; otherwise derives it from 
- `orientation_set`: Sets the screen orientation on an iOS simulator via an ephemeral Maestro flow.
- `podium_token_report`: Quantifies Podium's token savings: for an N-step flow, computes input tokens for Podium's no-vision
- `press_key`: Presses a hardware or system key via an ephemeral Maestro flow on the iOS simulator.
- `record_start`: Starts a screen recording on a booted iOS simulator. The recording runs in a detached background process. Call record_stop to finalize and retrieve the file.
- `record_stop`: Stops the active screen recording for an iOS simulator. Sends SIGINT to flush the video file, waits for the file size to stabilize, and returns the path and siz
- `run_flow`: Execute one or more Maestro flows on a device. Provide exactly one of:
- `run_steps`: Execute an ordered batch of UI actions in ONE call via the native backend
- `screen_size`: Returns the pixel dimensions of a booted iOS simulator screen by taking a temp screenshot and reading its pixel dimensions with sips.
- `screenshot`: Takes a screenshot of an iOS simulator. Returns the saved file path and byte size. Does NOT return base64 to keep payload small. saveTo defaults to a .png file 
- `set_location`: Sets the simulated GPS location on a running iOS simulator. Codifies the QA geo-spinner fix: use this to unblock location-gated features during QA testing witho
- `swipe`: Swipes in a direction or between two coordinates via an ephemeral Maestro flow.
- `tap_on`: Tap, double-tap, or long-press an element on screen via an ephemeral Maestro flow.
- `tap_with_fallback`: Sends a raw coordinate tap via the native backend (idb if installed, else a Maestro
- `validate_flow`: Returns a trustworthy, evidenced verdict on whether a just-implemented flow works. Runs your
- `wait_for_element`: Polls until an element/text is visible (via the oracle ladder), or fails on timeout. Use to act the instant
- `webview_eval`: Evaluates a JavaScript expression in a WebView's page context and returns the result.
- `webview_inspect`: Lists embedded WebViews (WKWebView) on a booted simulator and, for the selected one,
- `webview_navigate`: Drives a WebView's navigation: goto a URL, or back / forward / reload.
- `webview_network`: Captures HTTP traffic made INSIDE a WebView (fetch + XMLHttpRequest) and exports it as JSON or a

Measured by Glimind (https://glimind.com): MCP handshake + tool list only, no tool is ever called. CC BY 4.0.
