Launch offer: up to 30% off annual plans
Waitpid

Documentation

MCP server

Last updated:Jul 22, 2026

Connect an AI assistant to your cloud phones and control them in plain language. The hosted online endpoint is the quickest way in: one address, one key, nothing to install.

Remote endpoint

https://mcp.waitpid.ai
  • Transport: Streamable HTTP (MCP 2025-03-26+)
  • Auth: Authorization: Bearer <machine token> — header only, never in the URL
  • TLS: HTTPS required

1. Issue a machine token

In the console open Automation → API tokens and issue a token. Choose:

  • Operation scopesobserve, ui-action, app, file, lifecycle are the defaults. Escape hatches (run-command, local-bridge) are opt-in.
  • Device range — all devices, specific groups, or specific devices.
  • Expiry — optional TTL; rotate or revoke anytime.

The plaintext (wpa_...) is shown once. Store it in your agent's secret store.

2. Configure your agent

Claude Code

claude mcp add --transport http cloud-phone https://mcp.waitpid.ai \
  --header "Authorization: Bearer wpa_..."

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "cloud-phone": {
      "url": "https://mcp.waitpid.ai",
      "headers": { "Authorization": "Bearer wpa_..." }
    }
  }
}

Codex (~/.codex/config.toml)

[mcp_servers.cloud-phone]
url = "https://mcp.waitpid.ai"
http_headers = { "Authorization" = "Bearer wpa_..." }

VS Code (.vscode/mcp.json)

{
  "servers": {
    "cloud-phone": {
      "type": "http",
      "url": "https://mcp.waitpid.ai",
      "headers": { "Authorization": "Bearer wpa_..." }
    }
  }
}

Zed (settings.json)

{
  "context_servers": {
    "cloud-phone": {
      "source": "custom",
      "url": "https://mcp.waitpid.ai",
      "headers": { "Authorization": "Bearer wpa_..." }
    }
  }
}

3. The tool face

GroupToolsNotes
Sessiondevice_list, device_usePin a device to the MCP session
Observeui_inspect, status, screenshotSemantic UI tree with stable element ids; capability flags
Actui_tap, ui_type, ui_wait, ui_swipe, ui_keyElement-first targeting, normalized coordinates as fallback
Appsapp_launch, app_stop, app_listPackage-level operations
Escape hatchrun_commandOnly visible with the run-command scope

Every action tool also accepts an explicit device parameter, so stateless agents can skip device_use.

Device selection

  1. device_list — enumerate devices in your token's range
  2. device_use { device: "42" } — pin it to this session
  3. Actions default to the pinned device; selection is in-memory and expires with the session

Scopes & security

  • The tool list is trimmed at handshake to your token's scopes — an observe-only token never sees action tools.
  • Every call is re-validated server-side (scope × device range × ownership); audit entries record the token and target device.
  • Tokens rotate with a grace window and revoke instantly.
  • OAuth 2.1 for public clients is on the roadmap; Bearer machine tokens are the supported path today.

Local alternative: stdio

If your client can't reach remote servers (or you need local port bridging), run the same tool face locally:

wp_cli auth login          # paste your machine token once
wp_cli mcp                 # stdio MCP server

The stdio face adds connect (requires the local-bridge scope). Everything else is identical — same tools, same API, same audits. See the wp_cli guide.