Skip to main content
Glama

Clousd: Real Android Phones for AI Agents

Server Details

A real Android phone in the cloud for any MCP agent. Each device is built as a specific handset (Pixel, Galaxy, Xiaomi, Motorola, OnePlus and 150+ models, Android 12-17) with the same build, sensors, cameras, codecs and GPU as the real hardware, Google Play inside, and its own residential, mobile, ISP or datacenter network exit in the country you choose - apps see a phone, not an emulator. Six tools: observe (screenshot with numbered elements + UI tree), act (tap by number, swipe, type in any language, apps, links, intents, settings, clipboard, notifications), inspect (notifications, clipboard, app versions, crashes, health without touching the screen), snapshots (reset every run to the same state, clone one prepared phone into many), recipe (record a flow once, replay it without a model), devices. Local stdio server or hosted endpoint at https://api.clousd.com/mcp with your key. Built for agent evaluation and training, app testing on real models, account operations and any task that needs a phone in a specific country. Docs: https://clousd.com/docs/ - Early access: https://clousd.com/agents/

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL
Repository
Clousd-Android/clousd-sdk
GitHub Stars
0

TDQS

Score is being calculated.

Available Tools

6 tools
act
Destructive
Inspect

Do one thing on the phone, then wait until the screen settles. Prefer element numbers from observe over coordinates; tap_text taps the element whose text contains text. Typing goes into the focused field (tap it first) and works in any language. Returns what happened; "the screen did not change" means the action probably missed - observe again.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNox in screenshot pixels (tap, long_press, swipe start)
yNoy in screenshot pixels
msNoswipe / long_press duration in ms
x2Noswipe end x
y2Noswipe end y
textNotype: the text; key: home|back|recents|enter|tab|del|menu; scroll: down|up; open_app/close_app: package; open_url: https://...; tap_text/wait_text: text on screen; settings: wifi|bluetooth|display|sound|apps|location|about|battery|...; intent: a URI to view (geo:, tel:, https:...) or JSON {action,data,package,component,extras}; clipboard_set: the text
actionYesone of: tap long_press swipe scroll tap_text wait_text type key open_app close_app open_url installed intent settings clipboard_set notifications_open notifications_close notifications_clear
deviceYesDevice name from devices (op=list), e.g. dev_04f2
elementNoelement number from the last observe (tap, long_press)
timeoutNowait_text: seconds to wait, up to 120

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
devices
Idempotent
Inspect

Phones this API key can use. op=list: name, state (running / stopped / starting), model, Android version and network exit of each phone. op=start / op=stop with device: start a stopped phone (waits until it has booted, one to three minutes) or stop one (a stopped phone keeps its state and costs nothing).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNolist (default) | start | stoplist
deviceNodevice name, for start/stop

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
inspect
Read-only
Inspect

Read the phone without touching the screen. notifications: the shade as a list (app, title, text, time). clipboard: the clipboard text. app: installed version, install/update time, installer, whether it runs or is on screen. crashes: recent app crashes, native crashes and ANRs with the first lines of the stack. health: running, booted, network exit and the latest automatic check of the phone. installed: packages of apps that can be opened.

ParametersJSON Schema
NameRequiredDescriptionDefault
whatYesnotifications | clipboard | app | crashes | health | installed
deviceYesDevice name from devices (op=list), e.g. dev_04f2
packageNoapp: the package to describe; crashes: only this package

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
observe
Read-only
Inspect

Look at the phone: a fresh screenshot, the app on screen and (with_text) every labelled or tappable element with a number. Act on an element by its number (act element=N); coordinates, when needed, are in this image's pixels.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesDevice name from devices (op=list), e.g. dev_04f2
numbersNodraw the element numbers on the screenshot
with_textNoalso list the elements (numbered, centres in image pixels)
recipe
Destructive
Inspect

App recipes: scripted flows that wait for the right screen at each step, deal with popups and report what they did. op=run runs a built-in recipe (package + action) or your own JSON and returns when it is finished. op=record_start begins recording what is done on the phone (through act, or by a person in the live view); record_status shows progress; record_stop returns the recorded draft recipe, ready for op=run.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYesrun | record_start | record_status | record_stop
varsNorun: variables as JSON, e.g. {"seconds": "300"}
stepsNorun: your own recipe as JSON {app, steps:[...]} (e.g. a recorded draft)
actionNorun: built-in recipe name (e.g. warm, login, publish_post)
deviceYesDevice name from devices (op=list), e.g. dev_04f2
packageNorun: app package of a built-in recipe (e.g. com.instagram.android)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
snapshots
Destructive
Inspect

Saved states of a phone, for starting every run from the same point. op=list: id, created, android, current, restorable. op=save: save the current state. op=restore with snapshot_id: reset the phone to that state (what happened since is lost). op=clone with snapshot_id and new_name: a new phone from that state.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNolist (default) | save | restore | clonelist
deviceYesDevice name from devices (op=list), e.g. dev_04f2
new_nameNoclone: name of the new phone (letters and digits, up to 16)
snapshot_idNorestore / clone: id from op=list

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedact10 fields changed
      • addedInput schema / properties / action / description
        Added value: +"one of: tap long_press swipe scroll tap_text wait_text type key open_app close_app open_url installed intent settings clipboard_set notifications_open notifications_close notifications_clear"
      • addedInput schema / properties / device / description
        Added value: +"Device name from devices (op=list), e.g. dev_04f2"
      • addedInput schema / properties / element
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "element number from the last observe (tap, long_press)",
        +  "title": "Element"
        +}
      • addedInput schema / properties / ms / description
        Added value: +"swipe / long_press duration in ms"
      • addedInput schema / properties / text / description
        Added value: +"type: the text; key: home|back|recents|enter|tab|del|menu; scroll: down|up; open_app/close_app: package; open_url: https://...; tap_text/wait_text: text on screen; settings: wifi|bluetooth|display|sound|apps|location|about|battery|...; intent: a URI to view (geo:, tel:, https:...) or JSON {action,data,package,component,extras}; clipboard_set: the text"
      • addedInput schema / properties / timeout / description
        Added value: +"wait_text: seconds to wait, up to 120"
      • addedInput schema / properties / x / description
        Added value: +"x in screenshot pixels (tap, long_press, swipe start)"
      • addedInput schema / properties / x2 / description
        Added value: +"swipe end x"
      • addedInput schema / properties / y / description
        Added value: +"y in screenshot pixels"
      • addedInput schema / properties / y2 / description
        Added value: +"swipe end y"
    • Changeddevices3 fields changed
      • addedInput schema / properties / device / description
        Added value: +"device name, for start/stop"
      • addedInput schema / properties / op / description
        Added value: +"list (default) | start | stop"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "additionalProperties": true,
        +      "title": "Result",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "devicesOutput",
        +  "type": "object"
        +}
    • Addedinspect
    • Changedobserve3 fields changed
      • addedInput schema / properties / device / description
        Added value: +"Device name from devices (op=list), e.g. dev_04f2"
      • addedInput schema / properties / numbers
        Added value: +{
        +  "default": true,
        +  "description": "draw the element numbers on the screenshot",
        +  "title": "Numbers",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / with_text / description
        Added value: +"also list the elements (numbered, centres in image pixels)"
    • Addedrecipe
    • Changedsnapshots5 fields changed
      • addedInput schema / properties / device / description
        Added value: +"Device name from devices (op=list), e.g. dev_04f2"
      • addedInput schema / properties / new_name / description
        Added value: +"clone: name of the new phone (letters and digits, up to 16)"
      • addedInput schema / properties / op / description
        Added value: +"list (default) | save | restore | clone"
      • addedInput schema / properties / snapshot_id / description
        Added value: +"restore / clone: id from op=list"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "additionalProperties": true,
        +      "title": "Result",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "snapshotsOutput",
        +  "type": "object"
        +}
  2. 4 tool updates
    • First observedact
    • First observeddevices
    • First observedobserve
    • First observedsnapshots

Publisher details

Operator
Clousd ยท Publisher source
Operator website
https://clousd.com ยท Publisher source
Vendor relationship
First-party ยท Publisher source
Restrictions
Requires a Clousd account and an API key (early access, request at https://clousd.com/agents/). Usage is billed per minute while a phone runs ยท Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Give any LLM agent a real Android or iPhone. 62 MCP tools: tap, swipe, type, screenshot, screen-tree reading, app launch, camera, TTS, crash reports, batched execution. Android via ADB, iPhone via WebDriverAgent, on-device inference, Docker+KVM emulators. Works with Claude Code, Cursor, LangChain, LlamaIndex, and any MCP client. MIT.
    66
    377
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude or any MCP agent to see and operate a real Android phone over adb, with fast screen reads, tap/type/swipe actions, app launching, deep links, and brand-aware setup guidance, all without admin rights or an Android SDK.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to control a physical Android device or Docker-hosted emulator over ADB by taking screenshots and performing taps, swipes, key presses, text input, shell commands, app launches, and device info queries. It runs as a local MCP stdio server alongside a web UI and REST API for remote access.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.