MoreLogin
Manage MoreLogin anti-detect browser profiles and cloud phones through the official Local API (http://127.0.0.1:40000), including browser profile lifecycle,...
Description
name: morelogin description: Manage MoreLogin anti-detect browser profiles and cloud phones through the official Local API (http://127.0.0.1:40000), including browser profile lifecycle, fingerprint refresh, cloud phone power/file/app operations, and proxy/group/tag management. Use when the user mentions MoreLogin, envId/uniqueId, cloud phone, CDP, ADB, or multi-account automation. metadata: openclaw: emoji: "🌐" requires: bins: ["node", "adb"] install: - id: npm kind: npm dir: ./ label: Install MoreLogin CLI dependencies - id: adb kind: brew formula: android-platform-tools bins: ["adb"] label: Install ADB (Android Debug Bridge)
MoreLogin Local API Skill
Manage browser profiles and cloud phones via MoreLogin official Local API, supporting full lifecycle control, automation connections (CDP/ADB), and resource management (proxy/group/tag/app/file).
Official Sources
- Local API documentation: https://guide.morelogin.com/api-reference/local-api
- Base URL:
http://127.0.0.1:40000 - Requirements: MoreLogin Desktop
v2.15.0+, logged-in local account
Trigger Scenarios
Prefer this Skill when:
- User mentions
MoreLogin,envId,uniqueId,cloudphone - Creating/starting/closing browser profiles
- Refreshing fingerprints, clearing cache, or deleting profiles
- Cloud phone power on/off, ADB, app management, file upload
- API management of proxy, groups, tags
Pre-flight Checklist
Before any operation:
- Confirm MoreLogin desktop app is running and logged in.
- Confirm API is reachable:
http://127.0.0.1:40000. - Confirm requests originate from localhost (Local API does not support remote access).
- For cloud phone command execution, confirm ADB is available (
adbinstalled).
Execution Principles
- Treat
local-api.yaml+API-CONTRACT.mdas the canonical parameter source before constructing payloads. - Do not infer field names from memory; verify required keys/types first (especially
idvsids, object vs array bodies). - Use
POSTby default (except tag queryGET /api/envtag/all). - Uniform request header:
Content-Type: application/json. - Check
codefirst:0means success, non-zero usemsgfor error handling. - Prefer
envIdfor resource lookup; fall back touniqueIdwhen missing (browser profiles). - For batch endpoints (
/batch), always pass arrays and record changed objects.
API Capability Mapping
Browser Profile
| Endpoint | Purpose |
|---|---|
POST /api/env/create/quick |
Quick create profile |
POST /api/env/create/advanced |
Advanced create (full fingerprint params) |
POST /api/env/fingerprint/refresh |
Refresh device fingerprint |
POST /api/env/start |
Start profile and return debug info |
POST /api/env/close |
Close running profile |
POST /api/env/status |
Get run status and debug info |
POST /api/env/page |
Paginated profile list |
POST /api/env/detail |
Get single profile detail |
POST /api/env/removeLocalCache |
Clear local cache (cookies/localStorage etc.) |
POST /api/env/removeToRecycleBin/batch |
Batch delete to recycle bin |
Cloud Phone
| Endpoint | Purpose |
|---|---|
POST /api/cloudphone/create |
Create cloud phone |
POST /api/cloudphone/powerOn |
Power on |
POST /api/cloudphone/powerOff |
Power off |
POST /api/cloudphone/page |
Paginated list |
POST /api/cloudphone/info |
Get detail (including ADB info) |
POST /api/cloudphone/edit/batch |
Batch edit config |
POST /api/cloudphone/delete/batch |
Batch delete |
POST /api/cloudphone/newMachine |
One-click new device |
POST /api/cloudphone/updateAdb |
Enable/disable ADB |
Cloud Phone File & App
| Endpoint | Purpose |
|---|---|
POST /api/cloudphone/uploadFile |
Upload file to cloud phone |
POST /api/cloudphone/uploadUrl |
Query upload status |
POST /api/cloudphone/setKeyBox |
Set Keybox |
POST /api/cloudphone/app/install |
Install app |
POST /api/cloudphone/app/page |
Query app market list |
POST /api/cloudphone/app/installedList |
Query installed apps |
POST /api/cloudphone/app/start |
Start app |
POST /api/cloudphone/app/restart |
Restart app |
POST /api/cloudphone/app/stop |
Stop app |
POST /api/cloudphone/app/uninstall |
Uninstall app |
Proxy / Group / Tag
| Endpoint | Purpose |
|---|---|
POST /api/proxyInfo/page |
Query proxy list |
POST /api/proxyInfo/add |
Add proxy |
POST /api/proxyInfo/update |
Update proxy |
POST /api/proxyInfo/delete |
Delete proxy |
POST /api/envgroup/page |
Query groups |
POST /api/envgroup/create |
Create group |
POST /api/envgroup/edit |
Edit group |
POST /api/envgroup/delete |
Delete group |
GET /api/envtag/all |
Get all tags |
POST /api/envtag/create |
Create tag |
POST /api/envtag/edit |
Edit tag |
POST /api/envtag/delete |
Delete tag |
Standard Workflows
Workflow A: Browser Profile Automation
- Get
envIdfromcreate/quickorpage. - Call
startto launch the profile. - Call
statusto verify run state anddebugPort. - Use CDP (Puppeteer/Playwright) for automation.
- Call
closewhen done.
Workflow B: Cloud Phone Automation
- Call
pageorcreateto obtain cloud phoneid. - Call
powerOnto start. - Call
infoto get ADB connection params. - Call
updateAdbwhen needed to enable ADB. - Run supported cloud phone management endpoints only (no direct command execution).
- Call
powerOffwhen done.
Quick Examples (Official API)
# 1) Quick create browser profile
curl -X POST "http://127.0.0.1:40000/api/env/create/quick" \
-H "Content-Type: application/json" \
-d '{"browserTypeId":1,"operatorSystemId":1,"quantity":1}'
# 2) Start profile
curl -X POST "http://127.0.0.1:40000/api/env/start" \
-H "Content-Type: application/json" \
-d '{"envId":"<envId>"}'
# 3) Cloud phone power on
curl -X POST "http://127.0.0.1:40000/api/cloudphone/powerOn" \
-H "Content-Type: application/json" \
-d '{"id":"<cloudPhoneId>"}'
# 4) Query cloud phone detail (including ADB info)
curl -X POST "http://127.0.0.1:40000/api/cloudphone/info" \
-H "Content-Type: application/json" \
-d '{"id":"<cloudPhoneId>"}'
CLI Usage (This Project)
Prefer project-wrapped commands; fall back to curl when needed:
Entry equivalence note: openclaw morelogin ... and node bin/morelogin.js ... are fully equivalent (same arguments, same behavior, same exit code). Use either one based on your runtime environment.
# Browser profile
openclaw morelogin browser list
openclaw morelogin browser start --env-id <envId>
openclaw morelogin browser status --env-id <envId>
openclaw morelogin browser close --env-id <envId>
# Cloud phone
openclaw morelogin cloudphone list
openclaw morelogin cloudphone start --id <cloudPhoneId>
openclaw morelogin cloudphone info --id <cloudPhoneId>
## Response & Error Handling
Parse responses with the following structure:
```json
{
"code": 0,
"msg": null,
"data": {},
"requestId": "..."
}
Handling rules:
code == 0: Proceed, extractdata.code != 0: Outputmsg, mark failed step, suggest next fix.- For
start/powerOnoperations, callstatus/infoagain before subsequent steps to confirm.
Security & Limits
- Local API listens on localhost only; no remote access.
- Can be called only when MoreLogin account is logged in.
- Do not expose account, proxy passwords, ADB keys, or other sensitive data in logs or code.
- Double-check target ID lists before batch delete, cache clear, or app uninstall.
Security Notice
This skill no longer provides local ADB/SSH connection methods (adb-connect, adb-disconnect, adb-devices).
Command execution safeguards:
- Restricted to local automation context (localhost workflows and local API).
- Remote cloud phone
execis disabled by default and must be explicitly enabled. execcommand content is validated against a safe allowlist and blocks shell metacharacters.- Generic
apipassthrough is endpoint-allowlisted by default.
When Not to Use This Skill
- MoreLogin is not installed, not running, or not logged in.
- Requirements are for regular browser automation (no MoreLogin environment isolation).
- Requirements depend on remote access to Local API over the network.
Related Files
bin/morelogin.jslib/api.jslocal-api.yamlAPI-CONTRACT.mdREADME-OFFICIAL-API.md
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!