Daily context
Start with a brief built from your phone.
FoneClaw can summarize recent SMS, notifications, and device information into one working view.
Give me today's brief.
- 1Read the requested sources
- 2Group important items
- 3Return a concise brief
FONECLAW FOR ANDROID
Configure the model, permissions, and tool approvals behind every Android action.
FoneClaw is the phone agent. The selected LLM drives understanding and planning; built-in tools perform supported actions on the phone.
Every visual below comes from a localized FoneClaw product recording.
Daily context
FoneClaw can summarize recent SMS, notifications, and device information into one working view.
Give me today's brief.
Messages
Ask for a time range or contact and get the relevant messages grouped and summarized.
Summarize this week's SMS by contact.
Device audit
Check memory, storage, battery, network, app permissions, and sensitive app signals from one request.
Check my phone health.
Phone control
Adjust supported system controls or work with nearby Wi-Fi and Bluetooth devices.
Set brightness to 60%, then find my speaker.
Cross-app work
Summarize configured email, find a destination, and open a supported navigation route.
Summarize recent email, then navigate to the hotel.
Visible context
When enabled, a new screenshot or photo can trigger a prompt to summarize the visible content.
Summarize this screenshot.
Search the public catalog used by Skills and Workflows. Risk and approval labels come from the GitHub project.
127 public built-in tools
| Tool | Risk | Approval | What it does |
|---|---|---|---|
camera_open_latest_photoScreen and App | SENSITIVE_READ | Require approval | Open the latest visible photo from the system gallery. Use this only when the user explicitly asks to view or open the newest/latest photo. Do not use this as a follow-up after camera_take_photo unless the user explicitly asks to view or open the captured photo. |
camera_open_photoScreen and App | SENSITIVE_READ | Require approval | Open a specific visible photo from the system gallery. Use this only when the user explicitly asks to view or open a specific photo. Do not use this as a follow-up after camera_take_photo unless the user explicitly asks to view or open the captured photo. indexFromLatest is 1-based in newest-first order: 1 opens the latest photo, 2 opens the second latest photo, 3 opens the third latest photo. |
camera_take_photoScreen and App | SENSITIVE_READ | Require approval | Capture a new photo and return the saved photo URI when available. Use this when the user's intent is to capture a new photo. Leave lensFacing unset or auto for normal photo capture. Choose lensFacing=front only for front-facing or selfie intent; choose back only when the user explicitly asks for the back camera. Keep explicitLensSelection false for plain/default photo capture, even if the default physical lens is back. Set explicitLensSelection true only when the user explicitly asks for front, back, rear, or selfie capture. Do not call camera_open_latest_photo or camera_open_photo after this tool unless the user explicitly asks to view or open the photo. Call this tool directly. Capture uses the native system camera first. Explicit front/back capture may use the direct backend only if the native camera cannot honor the requested lens. Do not ask the user to grant permission before calling this tool. |
cross_app_read_screenScreen and App | LOW | Auto | Open or switch to a target Android app, wait until that app is stably in the foreground, and return the visible accessibility screen tree. Use this when one request asks to both open/switch to an app and read, inspect, describe, or summarize its visible page. Do not split that task into launch_app and get_screen_info. This tool does not capture a screenshot or interact with nodes. |
cross_app_screenshotScreen and App | SENSITIVE_READ | Require approval | Open or switch to a target Android app, wait briefly for the app screen to appear, then capture the current screen. Use this only when one user request asks to both open/switch to an app and take a screenshot. Do not use this for screenshot-only requests or app-launch-only requests. |
get_installed_map_appsScreen and App | LOW | Auto | Query installed map apps supported by map tools. Returns each app's display name and package name. |
get_screen_infoScreen and App | LOW | Auto | Get UI elements from the currently visible app screen. Each element has a node ID (for example [n3]) that can be used with tap_node. Do not use this to read, list, search, or summarize Android notifications; use sysinfo tools instead. Do not cache this result because node IDs change on each call. |
launch_appScreen and App | DEVICE_CONTROL | Require approval | Open a launchable Android app by package name or installed app display name. This changes the foreground app and may expose that app's screen. Use an exact package name when possible. If the result is ambiguous, ask the user to choose one returned package. |
play_store_check_appScreen and App | LOW | Auto | Check whether an exact Android package name is listed on Google Play by requesting https://play.google.com/store/apps/details?id=<packageName>. This is a read-only network check. Use it before play_store_install. |
play_store_installScreen and App | EXTERNAL_EFFECT | Require approval | Open a specific Google Play app details page by exact package name, tap Install, and wait for installation to complete. This tool does not open the installed app. Use only when an exact Android packageName is known. Never use this for fuzzy search results or to guess the first app. If packageName is unknown, ask the user for the exact app package first. Stops if Google Play shows paid, purchase, subscription, update, ambiguous UI, or if installation does not complete before timeout. |
screenshot_openScreen and App | SENSITIVE_READ | Require approval | Open a specific visible screenshot from the system gallery. index is 1-based in the selected order. sortOrder can be newest or oldest. |
screenshot_open_latestScreen and App | SENSITIVE_READ | Require approval | Open the latest visible screenshot from the system gallery. Use this when the user wants to view the newest saved screenshot instead of capturing a new one. |
screenshot_takeScreen and App | SENSITIVE_READ | Require approval | Capture the current Android screen with the FoneClaw accessibility service and save it to Pictures/FoneClaw/Screenshots. Use this when the user's intent is to capture the current screen. Do not use this when the user wants to view an already saved screenshot; use screenshot_open for viewing saved screenshots. |
tap_nodeScreen and App | LOW | Auto | Tap a UI element on the screen. The element is identified by its node ID, which can be obtained from the screen_info tool. |
alarm_modify_alarmDevice Status and System Control | DEVICE_CONTROL | Require approval | Immediately open the Android Clock alarms page when the user wants to modify, edit, adjust, or change an existing alarm. Call this tool for every separate modification request, even if it was already called earlier in the conversation. Do not ask for confirmation. Android does not provide a reliable public API for editing existing alarms, so this tool only navigates to the Clock app for manual editing. |
alarm_set_alarmDevice Status and System Control | DEVICE_CONTROL | Require approval | Set an Android Clock alarm. Collect missing time/repeat/label details before calling. |
bluetooth_connected_devicesDevice Status and System Control | SENSITIVE_READ | Require approval | Return Bluetooth devices currently connected through public Android Bluetooth profiles visible to normal apps. |
bluetooth_nearby_devicesDevice Status and System Control | SENSITIVE_READ | Require approval | Scan and return nearby Bluetooth devices. Includes BLE scan results and classic Bluetooth discovery results when permissions and Bluetooth state allow it. Devices without a readable name are hidden by default. |
bluetooth_pair_deviceDevice Status and System Control | DEVICE_CONTROL | Require approval | Start pairing with a Bluetooth device by MAC address. This launches Android's normal bonding flow and may require user confirmation or PIN entry. |
bluetooth_paired_devicesDevice Status and System Control | SENSITIVE_READ | Require approval | Return Bluetooth devices already paired with this Android device. |
bluetooth_stateDevice Status and System Control | LOW | Auto | Return the current Bluetooth adapter state: on, off, turning_on, turning_off, or unknown. |
close_bluetoothDevice Status and System Control | DEVICE_CONTROL | Require approval | Turn Bluetooth off using the public legacy disable API. If Android refuses, report that normal Android apps cannot turn Bluetooth off on this device. |
device_app_activity_snapshotDevice Status and System Control | SENSITIVE_READ | Require approval | Return a compact recent app activity snapshot from Android UsageStats. Requires usage access; it is not a live background-process monitor. |
device_app_permission_auditDevice Status and System Control | SENSITIVE_READ | Require approval | Return a compact permission-risk audit for installed apps visible to this app. Risk is heuristic and based on declared/granted sensitive permission groups. |
device_app_sensitive_auditDevice Status and System Control | SENSITIVE_READ | Require approval | Return compact sensitive app states: accessibility, notification listener, device admin, overlay, battery optimization exemption, and granted sensitive permission groups. |
device_battery_statusDevice Status and System Control | LOW | Auto | Return compact Android battery and power-save status. No settings are changed. |
device_health_checkDevice Status and System Control | LOW | Auto | Return a compact read-only health snapshot: memory, storage, battery, and network. No settings are changed. |
device_hidden_app_checkDevice Status and System Control | SENSITIVE_READ | Require approval | Return a compact heuristic check for user apps without launcher entries or disabled components. This can flag suspicious apps, but legitimate service-only apps may appear too. |
device_memory_statusDevice Status and System Control | LOW | Auto | Return compact Android memory status. No settings are changed. |
device_network_statusDevice Status and System Control | LOW | Auto | Return compact Android active network status and capabilities. No network settings are changed. |
device_storage_statusDevice Status and System Control | LOW | Auto | Return compact Android internal/shared storage status. No files are scanned or deleted. |
device_time_statusDevice Status and System Control | LOW | Auto | Return the current Android system time zone and Unix timestamp for time-dependent tool calls. Set verifyWithNtp=true only when the system time is disputed or an online reference is required. NTP verification uses ntp1.aliyun.com and never changes the system clock. |
dnd_open_policy_access_settingsDevice Status and System Control | DEVICE_CONTROL | Require approval | Open Android settings where the user can grant FoneClaw Do Not Disturb / Notification Policy access. Do not call this immediately after dnd_set_mode reports that it already opened the settings page. |
dnd_set_modeDevice Status and System Control | DEVICE_CONTROL | Require approval | Set Android Do Not Disturb mode. If policy access is missing or Android rejects the write, this opens the system DND policy access/settings page. |
dnd_statusDevice Status and System Control | LOW | Auto | Read Android Do Not Disturb policy access state and current interruption filter. |
flashlight_set_enabledDevice Status and System Control | DEVICE_CONTROL | Require approval | Turn the Android flashlight on or off using the system camera torch API. |
flashlight_statusDevice Status and System Control | LOW | Auto | Return whether the flashlight is available and the last known torch state. |
flashlight_toggleDevice Status and System Control | DEVICE_CONTROL | Require approval | Toggle the Android flashlight. If the current state is unknown, this turns it on. |
foneclaw_permission_statusDevice Status and System Control | LOW | Auto | Check all current permissions and special-access capabilities of FoneClaw itself. Use this when the user asks which FoneClaw permissions are enabled, missing, limited, or available. This is a fresh read-only check; do not use app audit, notification-panel, or screen-reading tools as a substitute. |
open_bluetoothDevice Status and System Control | DEVICE_CONTROL | Require approval | Request Bluetooth to turn on. For legacy target SDKs this first tries the public enable API, then falls back to Android's system confirmation UI when needed. |
system_panel_open_notificationsDevice Status and System Control | SENSITIVE_READ | Require approval | Open the visible Android notification shade only when the user explicitly asks to open, show, display, or pull down the panel. Never use this to read, inspect, search, list, or summarize notifications; use sysinfo tools for those requests. Requires FoneClaw accessibility service. |
system_panel_open_quick_settingsDevice Status and System Control | DEVICE_CONTROL | Require approval | Open Android quick settings / quick toggles / control center panel. Requires FoneClaw accessibility service. |
system_settings_open_battery_optimization_entryDevice Status and System Control | DEVICE_CONTROL | Require approval | Open Android battery optimization settings. If appNameOrPackage is provided, open that app's detail page by package name or installed app label. If it cannot be resolved or opened, return failure and do not open another settings page. If empty, open the system battery optimization list/settings page. |
system_settings_open_battery_saver_settingsDevice Status and System Control | DEVICE_CONTROL | Require approval | Open Android Battery Saver / power saving / low power mode settings. Normal apps cannot directly toggle Battery Saver through public APIs, so after settings opens the user must enable or disable it manually. Vendor ROMs may fall back to generic battery settings. |
system_settings_open_date_time_settingsDevice Status and System Control | DEVICE_CONTROL | Require approval | Open the Android Date & time settings page directly. Use this for date, time, automatic time, time zone, or automatic time-zone settings. This launches a system settings Intent and does not require accessibility, screen reading, or tapping. After it succeeds, do not call launch_app, get_screen_info, or tap_node. |
system_settings_open_hotspot_entryDevice Status and System Control | DEVICE_CONTROL | Require approval | Open Android hotspot settings. Normal apps cannot reliably toggle hotspot silently through public Android APIs. If the exact hotspot settings page cannot be opened, this returns failure and does not open another settings page. |
system_settings_open_location_entryDevice Status and System Control | DEVICE_CONTROL | Require approval | Open Android location settings. If appNameOrPackage is provided, open that app's detail page by package name or installed app label. If it cannot be resolved or opened, return failure and do not open another settings page. If empty, open the system Location settings page. |
system_settings_set_auto_rotateDevice Status and System Control | DEVICE_CONTROL | Require approval | Enable or disable Android auto rotation. Requires the special modify-system-settings permission. |
system_settings_set_brightnessDevice Status and System Control | DEVICE_CONTROL | Require approval | Set Android screen brightness. Manual mode writes percent from 1 to 100; auto mode only enables automatic brightness and ignores percent. Requires the special modify-system-settings permission. |
system_settings_set_eye_comfortDevice Status and System Control | DEVICE_CONTROL | Require approval | Open Android Display settings for Eye comfort/Night Light/blue light filter/reading mode. Use this tool instead of only giving manual instructions for multilingual eye-comfort intents. Android vendors expose the exact switch differently, so this tool opens Display settings and lets the user finish the switch on that page. |
system_settings_set_font_scaleDevice Status and System Control | DEVICE_CONTROL | Require approval | Set Android system font scale. Requires the special modify-system-settings permission. Typical values are 0.85 small, 1.0 default, 1.15 large, 1.3 larger, and up to 1.6 extra large. |
system_settings_set_haptic_feedbackDevice Status and System Control | DEVICE_CONTROL | Require approval | Enable or disable Android haptic feedback. Requires the special modify-system-settings permission. |
system_settings_set_screen_timeoutDevice Status and System Control | DEVICE_CONTROL | Require approval | Set Android screen-off timeout in seconds. Requires the special modify-system-settings permission. Values are clamped to 15..1800 seconds. |
system_settings_set_touch_soundsDevice Status and System Control | DEVICE_CONTROL | Require approval | Enable or disable Android touch sounds. Requires the special modify-system-settings permission. |
system_settings_set_user_rotationDevice Status and System Control | DEVICE_CONTROL | Require approval | Lock Android screen rotation. Requires the special modify-system-settings permission and disables auto rotation. Use portrait, landscape, reverse_portrait, or reverse_landscape. |
system_settings_statusDevice Status and System Control | LOW | Auto | Return writable system settings permission state plus current screen brightness, font scale, screen timeout, rotation, touch sounds, and haptic feedback. This reads Android system settings only. |
volume_adjust_streamDevice Status and System Control | DEVICE_CONTROL | Require approval | Raise or lower one Android audio stream by one system step. Choose this for relative volume changes. |
volume_set_all_streams_mutedDevice Status and System Control | DEVICE_CONTROL | Require approval | Mute or unmute all supported Android audio streams and report which streams actually changed. Choose this for whole-device or all-volume mute requests. |
volume_set_ringer_modeDevice Status and System Control | DEVICE_CONTROL | Require approval | Set Android phone ringer mode. For silent mode, this automatically falls back to muting all audio streams when Android rejects the ringer-mode write. |
volume_set_streamDevice Status and System Control | DEVICE_CONTROL | Require approval | Set one Android audio stream to a target percentage. Choose this when the user asks for an exact volume level. |
volume_set_stream_mutedDevice Status and System Control | DEVICE_CONTROL | Require approval | Mute or unmute one Android audio stream. This changes a stream mute state, not the phone ringer mode. |
volume_statusDevice Status and System Control | LOW | Auto | Read the current Android volume state for audio streams and the current ringer mode. |
wifi_configured_networksDevice Status and System Control | SENSITIVE_READ | Require approval | Read Android's configured or saved Wi-Fi networks. Return network metadata and connection status, but never Wi-Fi passwords. |
wifi_connectDevice Status and System Control | DEVICE_CONTROL | Require approval | Connect to a Wi-Fi network. The tool first checks Android's saved Wi-Fi configurations for the SSID and connects directly if it exists. If it is not saved, it uses the provided passphrase to add/connect the network, or falls back to Android's Wi-Fi panel when password input is needed. |
wifi_disconnectDevice Status and System Control | DEVICE_CONTROL | Require approval | Disconnect from the current Wi-Fi access point. The tool first attempts a silent legacy WifiManager disconnect for target API 28 hosts; if Android rejects it, it falls back to opening Android's Wi-Fi panel for user action. |
wifi_forgetDevice Status and System Control | DESTRUCTIVE | Require approval | Forget a saved Wi-Fi network. The tool first attempts silent legacy WifiManager removeNetwork, then falls back to Android's Wi-Fi panel for user action. |
wifi_scan_networksDevice Status and System Control | SENSITIVE_READ | Require approval | Scan and return nearby Wi-Fi access points. If Wi-Fi is off, this tool first attempts to enable Wi-Fi directly and only falls back to Android's Wi-Fi panel if direct enable fails. Requires location permissions and device location services. Results can reveal location-sensitive network data. |
wifi_set_enabledDevice Status and System Control | DEVICE_CONTROL | Require approval | Enable or disable Android Wi-Fi. The tool first attempts the direct WifiManager operation, then checks whether Android actually reached the requested state; if the request fails or remains pending, it falls back to opening Android's Wi-Fi panel for user action. |
wifi_statusDevice Status and System Control | SENSITIVE_READ | Require approval | Return current Android Wi-Fi status and active Wi-Fi connection details when the app has permission. This reads network state only. |
get_locationLocation and Navigation | SENSITIVE_READ | Require approval | Get the current Android device location while FoneClaw is in use. Requires foreground location permission only. |
location_search_nearby_placeLocation and Navigation | SENSITIVE_READ | Require approval | Search nearby place candidates for an ambiguous place name using the current device location. Use this only when the user explicitly asks to find, verify, resolve, choose, or navigate to a place, or when a navigation destination is ambiguous. For calendar creation, a user-provided place name is sufficient: preserve it as locationName and do not call this tool solely because an exact address or coordinates are missing. |
map_navigateLocation and Navigation | EXTERNAL_EFFECT | Require approval | Open a route or navigation screen in a map app for a destination and travel mode. This launches an external map app, uses only the provided arguments, and does not read device data. |
mail_account_listMail | LOW | Auto | List configured mail accounts. Leave query empty to list all accounts. When query is provided, matching priority is account id, email, alias, then fuzzy alias or email. Exact matches can still return multiple accounts. |
mail_account_saveMail | DEVICE_CONTROL | Require approval | Test both IMAP and SMTP connections and save the mail account only when both succeed. Call this as soon as every required configuration field is available. This operation requires user approval. |
mail_deleteMail | DESTRUCTIVE | Require approval | Move up to 20 exact messageRefs to trash, or permanently delete them only when the user explicitly requested permanent deletion. Never retry an uncertain result. |
mail_listMail | LOW | Auto | List, filter, or search message summaries. Query searches subject, sender, recipients, and body. Leave accountId empty to use the only account or the unique default account. |
mail_readMail | SENSITIVE_READ | Require approval | Read one message from a messageRef returned by mail_list and mark it read on the server. After the tool succeeds, summarize the message for the user in the same response. |
mail_sendMail | EXTERNAL_EFFECT | Require approval | Send a new email, reply, reply all, or forward. Requires approval. Attachments must use the exact structured metadata announced with the current user message. |
call_log_missedCommunication and Contacts | SENSITIVE_READ | Require approval | Read recent missed calls. Use before requests like 'call back the missed call'. After selecting a number, call phone_dial(phoneNumber), then use get_screen_info and tap_node in the dialer. |
call_log_recentCommunication and Contacts | SENSITIVE_READ | Require approval | Read recent call log entries from Android CallLog. Requires READ_CALL_LOG permission. Use before answering who called recently or before selecting a call to call back. |
contacts_listCommunication and Contacts | SENSITIVE_READ | Require approval | List a limited number of Android contacts. Requires READ_CONTACTS permission. Use only when the user explicitly asks to view contacts. |
contacts_searchCommunication and Contacts | SENSITIVE_READ | Require approval | Search Android contacts by display name or phone number. Requires READ_CONTACTS permission. Use this before dialing when the user gives a contact name such as 'call K K'. |
phone_dialCommunication and Contacts | EXTERNAL_EFFECT | Require approval | Check whether the phone number exists in contacts, then open the system dialer with the number prefilled. After the dialer opens, call get_screen_info, identify the visible call button, then call tap_node. If the call button is unclear or the screen is not the dialer, stop and ask the user to handle it manually. |
phone_dial_contactCommunication and Contacts | EXTERNAL_EFFECT | Require approval | Find a contact by name, then open the system dialer with that contact's phone number. Use when the user asks to call a named contact. If multiple contacts match, do not dial; show the matches and ask the user which one to call. After the dialer opens, call get_screen_info, identify the visible call button, then call tap_node. |
send_to_sms_messageCommunication and Contacts | EXTERNAL_EFFECT | Require approval | After approval, open a visible SMS/MMS draft. For a text SMS with a recipient, automatically tap Send only when FoneClaw accessibility is connected and the default message app, recipient, full message body, and one stable Send control are all verified. Attachments, dual-SIM prompts, ambiguous UI, or unavailable accessibility require manual action. After any terminal result, stop tool planning and never call get_screen_info or tap_node. |
sms_listCommunication and Contacts | SENSITIVE_READ | Require approval | Query live SMS messages on this Android device. With no keyword, address, contact, or threadId, list recent messages. Set keyword/address/contact to search. Set threadId only from an earlier sms_list result to read that conversation. For a summary request, call once with box=all and then summarize the returned received and sent messages. Never use SysInfo history as a replacement for this live result. |
calendar_create_eventCalendar | EXTERNAL_EFFECT | Require approval | Create an Android calendar event. Collect missing time and reminder details before calling. A user-provided place name is sufficient and should be passed directly as locationName. Do not search for an exact address or coordinates unless the user explicitly asks to verify, resolve, choose, or navigate to the place. Prefer startLocalDateTime/endLocalDateTime in yyyy-MM-dd HH:mm for user dates and relative dates; the tool will parse them in the device timezone. Do not create events from model-calculated epoch milliseconds. Use calendarId=0 unless the user explicitly selected a calendar id. After creation, use the tool result actualStart/actualEnd as the user-facing created time. |
calendar_delete_eventCalendar | DESTRUCTIVE | Require approval | Delete an Android calendar event by id. Search/list events across all calendars with calendarId=0 unless the user explicitly selected a calendar id. Always pass the known title, startMillis, endMillis and location when known so the target is unambiguous. |
calendar_list_calendarsCalendar | SENSITIVE_READ | Require approval | List writable Android calendars. Use this to let the user choose a calendar; do not assume that calendarId=1 is the local or target calendar. |
calendar_list_eventsCalendar | SENSITIVE_READ | Require approval | List Android calendar events in a concrete time range. Use for requests like today's schedule, tomorrow's schedule, existing events, or this week's events. Prefer startLocalDateTime/endLocalDateTime in yyyy-MM-dd HH:mm; the tool will parse them in the device timezone. Use startMillis/endMillis only as a deprecated fallback when exact epoch milliseconds came from a trusted tool result. Do not guess calendarId; use calendarId=0 to search all calendars unless the user explicitly selected a calendar id. |
calendar_open_eventCalendar | SENSITIVE_READ | Require approval | Open an Android calendar event detail page by event id. Search or list events first when the user describes an event in natural language. Do not guess event id. |
calendar_search_eventsCalendar | SENSITIVE_READ | Require approval | Search Android calendar events by keyword in a concrete time range. Use before opening, updating, or deleting an event when the user describes the event by title or content. Prefer startLocalDateTime/endLocalDateTime in yyyy-MM-dd HH:mm; the tool will parse them in the device timezone. Use startMillis/endMillis only as a deprecated fallback when exact epoch milliseconds came from a trusted tool result. Do not guess calendarId; use calendarId=0 to search all calendars unless the user explicitly selected a calendar id. |
calendar_update_eventCalendar | EXTERNAL_EFFECT | Require approval | Update an Android calendar event by id. Search/list events first when the user describes the target in natural language, and pass known target details with the changed fields. Do not guess calendarId or event id; search all calendars with calendarId=0 unless the user explicitly selected a calendar id. Blank text fields are ignored. Use startMillis/endMillis=0 to keep existing times. Use reminderMinutes=-2 to keep reminders, -1 to remove reminders, and >=0 to replace reminders. |
memo_createMemo | DEVICE_CONTROL | Require approval | Create a user-visible local memo, note, or task record. Use when the user explicitly wants the content kept as a memo or actionable note. Do not use this tool to save or query assistant-managed user profile memory such as preferences, identity, relationships, or response style. |
memo_deleteMemo | DESTRUCTIVE | Require approval | Soft-delete a local memo by id. Search/list memos first when the user describes the target in natural language so the target id/title is known. |
memo_listMemo | SENSITIVE_READ | Require approval | List user-visible local memo records. status can be active, done, archived, or all. Do not use this tool to answer what the assistant remembers about the user, user profile preferences, or conversation history. An empty result means only that no matching local memos exist; it does not mean that no user profile memory exists. |
memo_mark_doneMemo | DEVICE_CONTROL | Require approval | Mark a local memo as done or active by id. |
memo_searchMemo | SENSITIVE_READ | Require approval | Search user-visible local memos by keyword in title, content, or tags. status can be active, done, archived, or all. Do not use this tool to search assistant-managed user profile memory or conversation history. An empty result describes only the local memo store. |
memo_updateMemo | DEVICE_CONTROL | Require approval | Update a local memo by id. Search/list memos first when the user describes the target in natural language, and pass known target details with the changed fields. Blank title/content/tags are ignored. reminderAtMillis=-2 keeps reminder, -1 clears reminder, and >0 sets reminder. |
sysinfo_brief_sourcesSystem Information | SENSITIVE_READ | Require approval | Get local sysinfo sources for a daily brief. This reads already-captured local data; it does not start collection. |
sysinfo_mark_reviewedSystem Information | DEVICE_CONTROL | Require approval | Mark local sysinfo events as reviewed after user confirmation. |
sysinfo_notification_querySystem Information | SENSITIVE_READ | Require approval | Query already-captured Android notifications when the user explicitly asks for a special time window such as yesterday or the last N minutes, oldest-first ordering, or every notification update instead of one collapsed notification. For an ordinary summary of today's notifications, use sysinfo_today_brief instead. This tool reads only notification events and never opens the notification panel. |
sysinfo_searchSystem Information | SENSITIVE_READ | Require approval | Search already-captured local sysinfo by keyword. Does not scan system sources. |
sysinfo_threadSystem Information | SENSITIVE_READ | Require approval | Load already-captured local sysinfo events in one threadKey. |
sysinfo_today_briefSystem Information | SENSITIVE_READ | Require approval | Read already-captured notification contents for the LLM to analyze. Use when the user asks to read, list, review, check, or summarize notifications, unread notifications, important notifications, what happened today, what needs attention today, daily brief, missed messages, or next actions. Reads today's already-captured local sysinfo cache and returns source, title, preview, time, importance, and suggested next steps. After this tool succeeds, synthesize its contents into a semantic user-facing answer in the language requested by the user. Do not use this tool for an explicit recent N-minute window; use sysinfo_notification_query instead. Do not merely echo the raw tool output. Never open the notification panel or read its UI for these requests. |
shopping_compareWeb and Shopping | LOW | Auto | Search public web results for a product on shopping platforms and return comparison evidence. Use this before giving shopping price advice. |
web_fetchWeb and Shopping | LOW | Auto | Fetch a specific web page by URL and return readable page text. |
web_searchWeb and Shopping | LOW | Auto | Search the web for relevant pages. Returns result titles, URLs, and short snippets. |
shortcut_save_agent_promptTasks, Workflows, and Shortcuts | DEVICE_CONTROL | Require approval | Save a user-created shortcut that sends a prompt to the agent. Only call this after the user confirms the title, description, and behavior. |
shortcut_save_direct_toolTasks, Workflows, and Shortcuts | DEVICE_CONTROL | Require approval | Save a user-created direct tool shortcut. Only call this when every requested action can be fully mapped to known tool steps with complete parameters. |
task_createTasks, Workflows, and Shortcuts | LOW | Auto | Create the complete ordered TODO plan in one call for the current user request. This is a mandatory precondition before any non-task tool when the request requires three or more steps. Pass every bounded user-facing step in items. The plan can be created exactly once and cannot be extended later. Never include task management, cleanup, status-update, or final-response items. |
task_listTasks, Workflows, and Shortcuts | LOW | Auto | List internal TODO items for the current user request. By default returns open, in_progress, and blocked items. |
task_updateTasks, Workflows, and Shortcuts | LOW | Auto | Update one internal TODO item. Allowed transitions: open to in_progress, blocked, or abandoned; in_progress to blocked, done, or abandoned; blocked to open or abandoned. Done and abandoned are terminal. Only one task may be in_progress. |
workflow_deleteTasks, Workflows, and Shortcuts | DESTRUCTIVE | Require approval | Delete a saved workflow by id. |
workflow_listTasks, Workflows, and Shortcuts | SENSITIVE_READ | Require approval | List saved workflows. |
workflow_saveTasks, Workflows, and Shortcuts | DEVICE_CONTROL | Require approval | Save a reusable workflow. stepsJson must be a JSON array of {toolName, arguments}. |
add_skillSkills and Plugins | DEVICE_CONTROL | Require approval | Add a new skill document to the skill registry. |
disable_skillSkills and Plugins | DEVICE_CONTROL | Require approval | Disable a user Skill so it is hidden from the agent prompt. |
enable_skillSkills and Plugins | DEVICE_CONTROL | Require approval | Enable a valid user Skill so it can be used by the agent. |
list_skillsSkills and Plugins | SENSITIVE_READ | Require approval | List user and system Skills with source, enabled state, and validation state. |
load_skill_detailSkills and Plugins | SENSITIVE_READ | Require approval | Load a specialized skill when the task at hand matches one of the skills listed in the system prompt. Use this tool to inject the skill's instructions and resources into current conversation. The output may contain detailed workflow guidance as well as references to scripts, files, etc in the same directory as the skill. The skill name must match one of the skills listed in your system prompt. |
plugin_request_installSkills and Plugins | EXTERNAL_EFFECT | Require approval | Create a structured install proposal for one official plugin. This does not download or install the plugin; HomeScreen must ask the user. |
plugin_searchSkills and Plugins | LOW | Auto | Search official FoneClaw plugin metadata when a user asks for a capability that is not available in the current tool list. This only searches metadata and never downloads or installs a plugin. |
preview_skill_importSkills and Plugins | LOW | Auto | Preview a pasted SKILL.md document. This parses and validates but does not save. |
remove_skillSkills and Plugins | DESTRUCTIVE | Require approval | Remove the skill |
save_skill_draftSkills and Plugins | DEVICE_CONTROL | Require approval | Save a SKILL.md document as a disabled user Skill draft. |
update_skillSkills and Plugins | DEVICE_CONTROL | Require approval | Update an existing skill document in the skill registry. |
No tools match this search.
You do not need your own API. Model configuration changes the reasoning engine; FoneClaw remains the Android agent that executes the phone task.
Start immediately without supplying your own API credentials.
Add an OpenAI-compatible model with an API Base URL and API Key.
Use the in-app Hugging Face import path for a compatible local model.
Settings expose local data controls, on-demand permissions, model selection, and tool approval behavior.
FoneClaw prompts for the specific Android permission only when the requested task needs it.
Choose Auto approve, Follow tool policy, or Deny all to match how much autonomy you want.
Review memory, third-party account information, agent data collection, image detection, and permissions from Settings.
Common questions about FoneClaw features.
The public GitHub catalog includes more than 120 built-in tools across 12 groups, including device checks, SMS, calls, system settings, Wi-Fi and Bluetooth, screenshots, email, calendar, maps, web tasks, Workflows, and Skills.
No. When a task needs a permission, FoneClaw prompts for that specific access and guides you to enable it. You can review permissions later in Settings.
FoneClaw can prepare and execute supported communication actions. Whether a tool asks for approval depends on your selected Tool Approval Mode and the applicable tool policy.
No. Email needs IMAP/SMTP setup, maps need an installed map app, image auto-summary needs the relevant detection and overlay permissions, and some Android settings require additional system permissions. Core features like phone status, SMS summary, and system settings work out of the box.
No. You can use the free FoneClaw default model. You can also configure a mainstream online model with an API Base URL and API Key, or import a compatible on-device model.
Download FoneClaw and test its public Android tool set, on-demand permissions, and practical everyday tasks.