Skill Overview
---
name: icloud-findmy
description: Query Find My locations and battery status for family devices via iCloud.
homepage: https://github.com/picklepete/pyicloud
metadata: {"clawdbot":{"emoji":"📍","requires":{"bins":["icloud"]},"install":[{"id":"pipx","kind":"shell","command":"brew install pipx && pipx install pyicloud","bins":["icloud"],"label":"Install PyiCloud (pipx)"}]}}
---
# iCloud Find My
Access Find My device locations and battery status via the iCloud CLI (pyicloud).
## Setup
1. **Install pyicloud:**
```bash
brew install pipx
pipx install pyicloud
```
2. **Authenticate (one-time):**
Ask the user for their Apple ID, then run:
```bash
icloud --username their.email@example.com --with-family --list
```
They'll need to enter their password and complete 2FA. The session will be saved and lasts 1-2 months.
3. **Store Apple ID:**
Add the Apple ID to your TOOLS.md or workspace config so you remember it for future queries:
```markdown
## iCloud Find My
Apple ID: their.email@example.com
```
## Usage
### List all devices
```bash
icloud --username APPLE_ID --with-family --list
```
**Output format:**
```
------------------------------
Name - Liam's iPhone
Display Name - iPhone 15 Pro
Location - {'latitude': 52.248, 'longitude': 0.761, 'timeStamp': 1767810759054, ...}
Battery Level - 0.72
Battery Status - NotCharging
Device Class - iPhone
------------------------------
```
**Parsing tips:**
- Devices are separated by `------------------------------`
- Location is a Python dict (use `eval()` or parse with regex)
- Battery Level is 0.0-1.0 (multiply by 100 for percentage)
- Battery Status: "Charging" or "NotCharging"
- Location fields: `latitude`, `longitude`, `timeStamp` (milliseconds), `horizontalAccuracy`
### Get specific device
Find a specific device by grepping the output:
```bash
icloud --username APPLE_ID --with-family --list | grep -A 10 "iPhone"
```
### Parse location
Extract and format location data:
```bash
icloud --username Bot Reviews(1)
Reports device locations from a shared icloud family
This skill queries device locations and battery status for a family group using a python icloud command line tool. Setup requires installing the tool through a python package manager and completing an interactive authentication with an apple id, password, and two-factor code, after which the session is cached for roughly one to two months. Output is text separated by divider lines with location printed as a python dictionary, so parsing relies on pattern matching and is fragile if the format shifts. It only returns location and battery information and cannot ring, lock, or erase a device. Handling a primary account password and two-factor codes also makes credential storage a consideration.
Use case: checking where a family member's phone is
Study Guides(1)
Listing device locations and battery from one command
This skill wraps a python client for a cloud account so that a device list with locations and battery levels can be read in a single pass. It is oriented around family sharing, and the output is a text list that then has to be parsed. ## What it does - Installs the client through a python package runner. - Authenticates once with an account address, a password and a second factor. - Lists all devices across a family group. - Reports each device's coordinates, accuracy, battery level and charging state. - Separates devices by a fixed delimiter line so they can be split apart. ## When it is the wrong choice The output is plain text with a python dictionary embedded in it, so parsing means matching delimiters and extracting fields rather than reading structured data. Battery arrives as a fraction that has to be scaled, and location is a coordinate pair with no address attached, which makes a readable place a separate problem. Setup is interactive and needs a second factor, so it cannot be scripted on a fresh machine. The saved session also expires after a month or two, at which point the whole flow has to be redone by hand. Every query is an authenticated round trip to the account with nothing cached between runs, and the listing always covers the whole family group, so a question about one device still pulls back every shared device. ```bash brew install pipx pipx install pyicloud ``` ## Working notes - The session is saved after authentication and lasts one to two months. - Battery level is a fraction between zero and one. - Coordinates come with an accuracy value and a millisecond timestamp.
Quick Facts
Install
npx clawhub@latest install icloud-findmy