Introduction

AgentPhone is the bridge between your AI agents and the physical world. It exposes a standard Android device as a set of MCP (Model Context Protocol) tools, allowing LLMs to touch screens, send messages, and manage files just like a human user.

What is AgentPhone?

Unlike software-only automation (which relies on fragile accessibility APIs or root hacks), AgentPhone uses a dedicated hardware layer and a custom Android ROM to provide:

  • Stability: Agents run as system services, immune to background killing.
  • Identity: Real SIM cards for authentic SMS and Voice calls.
  • Compliance: No root required; uses signed OEM system permissions.

Architecture Overview

The system consists of three main components:

1. AgentPhone Device

The physical Android hardware running our custom daemon.

2. AgentHub

USB/Network bridge that manages device connections and power.

3. MCP Server

The interface your LLM talks to. Translates tool calls into device commands.

Claude Desktop Integration

To use AgentPhone with Claude Desktop, add the following StreamableHTTP configuration to your claude_desktop_config.json:

{
  "mcpServers": {
    "agentphone": {
      "url": "https://agenphone-api.yunke.ai/mcp/",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

OpenClaw Integration (Coming Soon)

OpenClaw supports AgentPhone natively. In your OpenClaw dashboard:

  1. Go to Connections > Add New.
  2. Select MCP Server.
  3. Enter your AgentPhone Workspace URL (e.g., https://agenphone-api.yunke.ai/mcp/).
  4. Authenticate using your Workspace API Key.

Manus Integration

Manus supports custom MCP servers natively. Follow these steps to connect AgentPhone:

  1. Go to SettingsIntegrationsCustom MCP Servers.
  2. Click Add Custom MCP Server.
  3. Set the server name to AgentPhone, URL to https://agenphone-api.yunke.ai/mcp/, and the authorization header to Authorization: Bearer YOUR_API_KEY.
  4. Click Test Connection to verify, then save. AgentPhone tools will be available in your Manus workflows.

ZeroClaw & Perplexity

For search-based agents like Perplexity or ZeroClaw, AgentPhone provides a "Grounding" interface.

Configure the MCP endpoint in your agent's tool definition settings. The agent will then be able to "search" your phone's content (SMS, Photos, Files) just like it searches the web.

Mobile App Installation

The AgentPhone Companion App is required to link your physical device to the cloud.

Android APK QR Code

Or scan to download

* Note: Requires Android 11 or higher. For best performance, use a dedicated device.

MCP Tool Reference

Complete reference for all tools exposed by the AgentPhone MCP server. Call create_task first to obtain a task_id before invoking functional tools.

Task Management

create_taskCreate an AI task and obtain a task_id. Must be called before invoking any functional tool. Params: task_type (e.g. "phone_call", "data_collection", "outbound_call"), description (optional). Returns JSON with task_id and status.
complete_taskMark a task as finished. Params: task_id, status ("completed" / "failed" / "cancelled"). Returns JSON with the updated task status.

App Management

open_appOpen an application by package name or URL
list_packagesList all installed applications on the device
get_foreground_appGet the currently active foreground application
get_app_infoRetrieve metadata and info for a specific app
force_stop_appForce stop a running application
uninstall_appUninstall an application from the device
clear_app_dataClear all data and cache for an application

Calls & SMS

callInitiate a phone call to a number
hang_upEnd the current active call
answer_callAnswer an incoming call
list_contactsRetrieve all contacts from the device
list_call_logGet recent call history
search_contactsSearch contacts by name or phone number
send_smsSend an SMS message to a contact
read_smsRead SMS messages from the inbox

AI Outbound Call

ai_outbound_call_taskInitiate an AI outbound call (non-blocking). Sends the call command and waits for device acknowledgment (dialing state), then returns immediately. Params: phone (target number), prompt (AI conversation prompt), task_id, use_custom_prompt (optional, auto-set when prompt is provided). Returns JSON with request_id and task_id. Use query_request_events to poll for results.

Screen & Touch

tapSimulate a tap at specific screen coordinates
swipePerform a swipe gesture on the screen
dragDrag an element from one position to another
input_textType text into the focused input field
long_pressPerform a long press at specific coordinates
global_actionExecute a global Android action (home, back, recents)
screenshotCapture a screenshot of the current screen
phone_ai_observeCapture a screenshot and analyze it with an AI vision model. Returns next-step action suggestions with pixel coordinates. Params: instruction (task description), task_id, language (default "Chinese"). Returns JSON with thought, action_raw, and structured action (click / type / scroll / finished).
get_screen_hierarchyGet the full UI element hierarchy of the current screen
find_elementFind a UI element by attribute or selector
click_by_textClick an element matching specific text
click_by_view_idClick a UI element by its view resource ID
unlock_deviceUnlock the device screen
set_brightnessSet the screen brightness level

Device Info & Control

get_statusGet the current device status overview
get_device_infoRetrieve detailed device hardware and software info
get_batteryGet current battery level and charging state
get_volumeGet the current volume level
get_locationGet the device's current GPS location
get_lock_statusCheck if the device screen is locked
rebootReboot the device
shutdownShut down the device
set_volumeSet the device volume level
vibrateTrigger a device vibration pattern
phone_custom_commandSend a custom control command to the device for operations not covered by standard tools. Params: action (custom action name), task_id, params (JSON string, default "{}"), wait_response (default true). Returns command execution result.
phone_command_historyQuery device command execution history. Params: limit (default 10, max 50), status (optional filter: "pending" / "sent" / "success" / "failed" / "timeout"). Returns JSON array of command records.

Clipboard & Audio

get_clipboardGet the current clipboard content
set_clipboardSet text content to the clipboard
play_audioPlay an audio file on the device
stop_audioStop currently playing audio

Files & Media

list_filesList files in a specified directory
read_fileRead the content of a file
write_fileWrite or create a file with specified content
delete_fileDelete a file from the device
analyze_storageAnalyze device storage usage
find_large_filesFind large files consuming storage space
index_media_metadataIndex and retrieve metadata for media files
search_mediaSearch for media files by metadata or content

Notifications & Overlay

read_notificationsRead current notifications from the status bar
post_notificationPost a notification to the device
dismiss_notificationDismiss a specific notification
dismiss_all_notificationsDismiss all current notifications
show_toastShow a brief toast message on screen
show_overlayDisplay a floating overlay window
hide_overlayHide a specific overlay window
hide_all_overlaysHide all active overlay windows
list_overlaysList all active overlay windows

TTS Speech

speak_ttsConvert text to speech and play it on the device

Task Query

query_request_eventsQuery outbound call events by request_id. Core tool for polling AI call results. Params: request_id, event_type (optional: "status" / "dialog" / "task_summary"). Returns JSON with request status, is_completed flag, and events list. The call is considered ended when is_completed=true or a "task_summary" event appears.
query_task_statusQuery current AI task status, including execution progress, latest event, and statistics. Params: task_id. Returns JSON with task info, is_completed flag, call_state, progress (request/event counts), and the latest event and request.
query_task_historyQuery complete AI task history with all requests and events for tracing execution. Params: task_id, event_type (optional: "status" / "dialog" / "task_summary"), limit (default 50, max 200). Returns JSON with task info, all requests, and all events in reverse chronological order.

Pricing Plans

Choose a plan that scales with your agent fleet.

Monthly

$140 / mo

  • 300 mins Voice Call
  • Community Support

Quarterly

$280 / qtr

  • 1,800 mins Voice Call
  • Priority Support

Yearly

$830 / yr

  • 3,000 mins Voice Call
  • Dedicated Manager
  • SLA Guarantee