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 scopes —
observe,ui-action,app,file,lifecycleare 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
| Group | Tools | Notes |
|---|---|---|
| Session | device_list, device_use | Pin a device to the MCP session |
| Observe | ui_inspect, status, screenshot | Semantic UI tree with stable element ids; capability flags |
| Act | ui_tap, ui_type, ui_wait, ui_swipe, ui_key | Element-first targeting, normalized coordinates as fallback |
| Apps | app_launch, app_stop, app_list | Package-level operations |
| Escape hatch | run_command | Only visible with the run-command scope |
Every action tool also accepts an explicit device parameter, so stateless agents can skip device_use.
Device selection
device_list— enumerate devices in your token's rangedevice_use { device: "42" }— pin it to this session- 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.