Snapshot
The current layout is saved to your Mac before anything is sent.
macOS app + MCP server · iPhone & iPad · USB or Wi-Fi
Your real home screen (real icons, real grid, real widgets) in a window on your Mac, and the same editor handed to AI agents as sixteen MCP tools. Every write is snapshotted first, then read back and verified. In the app, nothing is written until you've seen the exact diff. An agent writes once its plan validates; to approve each agent write yourself, turn on Confirm agent writes (it's off by default).
Developer ID signed and notarized. Not on the Mac App Store; the reason is written down, not hidden.
One home screen. Two ways in.
What an agent actually did
From Claude Code, over USB, on an iPhone 16 Pro running iOS 27.0.
Patch 1 swapped Zwift and Music in the dock. Patch 2 moved a Smart Stack by its UUID onto a full page; four apps flowed into the freed slots. Both previewed, both snapshotted, both verified clean. The worked example →
Afterwards, without having watched: Write History in the app (⌘Y) lists recent writes like these two, marked AGENT, with the same sentences. What the app can tell you →
01 The problem
With a couple of hundred apps, rearranging by thumb is a ritual: hold, wiggle, drag to the edge, wait for the page flip, miss. And in our tests in August 2026, Apple Configurator, Apple's own desktop editor, failed in two ways on an iPhone 16 Pro running iOS 27.0.
Type a name, press Return, and it reverts to the auto-generated App Store category (“Folder”, “Finance”) as soon as the view redraws.
Merge two apps into a folder and one ends up inside the folder and still on the page. ScreenWright's validator refuses that state: an app can't be in two places.
In our August 2026 survey: not Configurator, not 3uTools or AnyTrans, not sbmanager, not MDM layout payloads. ScreenWright reads Smart Stacks and widgets at their real footprint and moves, resizes, or removes them without touching what's inside.
Every route we found is drag-and-drop, a push-only MDM payload on a supervised device, or a robot driving simulated touches. ScreenWright exposes read → diff → write as structured calls.
An agent reorganizing 265 apps should be a structured call, not a robot dragging icons.the engineering brief, day one
02 The safety model
The device's acknowledgement for a home-screen write carries no information, so every write, from either face, is a five-step transaction. There is no other way to write.
The current layout is saved to your Mac before anything is sent.
Compiled against the real installed-app list and real grid. Any error refuses the write.
The exact diff, with nothing written: the Review sheet, or preview_layout, which also says what SpringBoard will make of it. An agent's preview isn't shown to you unless you turn on Confirm agent writes.
One push, then about three seconds for SpringBoard to settle.
Read back and diffed against the prediction. “Verified clean” is the only success signal.
03 The MCP server
screenwright-mcp speaks Model Context Protocol over stdio, exposes sixteen tools and nothing else, and works with the app closed. The layout grammar lives inside the tool descriptions.
list_devices→get_layout→get_installed_apps→preview_layout→apply_layoutName, model, iOS version, transport, UDID. A Wi-Fi-visible device appears twice.
Dock, pages, folders, widgets with UUIDs, and the device's real grid metrics.
Every bundle ID and display name; the list app refs resolve against.
Compile and validate a spec. Structured errors and warnings. No write.
Validate, the diff you asked for, and what SpringBoard will make of it. No write.
Snapshot → validate → write → settle ~3 s → read back → verify. Refuses on any error.
Pre-write snapshots, newest first. At least the last 20 are kept.
The restore, planned and shown, with nothing written and no snapshot taken.
Push a snapshot back through the same verified pipeline. Omit the name for the most recent.
An app's real icon as a PNG image block, by bundle ID.
All device tools take an optional udid (default: the first USB device) and network: true for the Wi-Fi link. A write over Wi-Fi is flagged wireless: true.
04 Limits
Limits of what iOS exposes to a paired computer, not features we haven't gotten to. The server states the four hard ones to agents in its own instructions.
| Capability | Status | Why |
|---|---|---|
| Wallpaper | Can't be set | No command exists. On iOS 27, even reading it breaks the service channel, so the app doesn't try. |
| Icon appearance (dark, tinted, large) | Can't be set | Not in the service. |
| Removing an app from the home screen | Not possible | SpringBoard re-inserts anything omitted. ScreenWright warns rather than pretends. |
| Creating a widget | Not possible | Existing widgets can be moved, resized, or removed, by UUID. A synthesized widget renders as a dead blank tile, so the compiler refuses to invent one. A snapshot can't bring back a widget you removed; add it again on the device. |
| Blank slots, free placement, hidden apps, Today View, App Library order | Not expressible | Not in the wire format. |
05 Pricing
The download is free, so you can see exactly what it would do to your phone before you pay. A license unlocks writing to the device. One payment, no subscription, no account. Downloads and purchases open with ScreenWright 1.0.
Free
$0 forever
License
US$19 once
apply_layout, restore_snapshot, apply_saved_layoutPurchasing opens with ScreenWright 1.0. Sold by Paddle, our reseller. Your local currency and any sales tax or VAT are shown at checkout. 14-day refunds.
ScreenWright uses parts of iOS that Apple doesn't document or support. Any iOS update can stop it working, and we can't promise a fix or a date. We plan on updates after major iOS releases, and the free features let you check your device before you pay. If it doesn't work out, ask for a refund within 14 days. The details are in the terms.
Updates: your license covers every 1.x release. A future 2.0 may be a paid upgrade; if it is, your 1.x license stays yours. No free trial of writing: the free features are the trial, and the refund is the safety net.
06 Questions
Downloading, reading, editing, previewing and snapshots are free. Writing to a device needs a license: US$19, once, for one person on up to five Macs they use, with every 1.x update included. Purchasing opens with ScreenWright 1.0. Pricing →
Yes. Ask within 14 days of buying and you get your money back, for any reason. Ask us through the support page, or ask Paddle directly from your receipt email. There's no free trial of writing, so this is how you try it for real. Refund Policy →
Up to five of the Macs you use, at home and at work, at the same time. The first time you enter your key on a Mac, ScreenWright activates it with our license server once; after that it works offline. Moving to a new Mac? Deactivate an old one from inside ScreenWright, or ask us through the support page. A license is for one person, so other people need their own. Use it with as many iPhones and iPads as you own or manage.
It's possible. ScreenWright uses parts of iOS that Apple doesn't document, and any iOS update can change them. Every write is still snapshotted first and read back after, and a result that doesn't match the plan is reported as unclean, never as success. We plan on updates after major iOS releases and ship them through the app's updater, but we can't promise a fix or a date. Before you buy, the free features show you whether it works with your device today. What the terms say →
Your layouts are never uploaded to us. Your layouts, snapshots, app list and icons stay on your Mac, and the app has no accounts, analytics or telemetry. Here is what does leave your Mac:
None of these carries anything about your phone or your layout. If you connect an AI agent, what the agent reads goes to that agent's provider, so pick agents you trust. Privacy Policy →
Agent writes go through the same snapshot, preview and read-back checks as yours, and Write History shows you recent ones afterwards, reconstructed from their snapshots. Agents can still be wrong: a write that verified clean matches the agent's plan, not necessarily what you wanted. It's off by default: turn on Confirm agent writes in ScreenWright's settings and every agent write waits for you to click Allow. You're responsible for the agents you connect.
A Mac on macOS 15 or later and an iPhone or iPad paired with an ordinary “Trust This Computer” tap. No MDM, no jailbreak, no supervision. Tested on an iPhone 16 Pro on iOS 27.0, and used with an iPad. iPad support is still being validated. The grid is read from the device.
No. The app is a complete editor on its own. The MCP server is its own executable that runs with the app closed; it ships inside ScreenWright.app, and both link the same HomeScreenKit library, so an agent gets the same planner and verified writer you do.
Yes. With the cable in, turn on “Show this iPhone when on Wi-Fi” in Finder once; after that, same network, no cable. A Wi-Fi-visible device appears twice in the picker (a USB row and a Wi-Fi row) and you choose the link. Writes over Wi-Fi are flagged everywhere they appear. A locked, unplugged iPhone naps its Wi-Fi, so connecting retries for about 30 seconds and the app reconnects in place with your edits intact.
Every write snapshots the current layout to your Mac first, per device; at least the last 20 are kept. Stage one in the app and it goes through the same Review sheet as any edit; an agent previews with preview_restore_snapshot, then uses restore_snapshot, which takes a fresh snapshot first, so rolling back is itself reversible. One exception: a snapshot can't bring back a widget you removed; add it again on the device. Last resort, on the phone: Settings › General › Transfer or Reset iPhone › Reset › Reset Home Screen Layout.
Open Write History in the app (⌘Y, or the History button in the editor). It's a view of recent changes, reconstructed from the snapshot every write leaves on your Mac: newest first, who made each write, as a badge (AGENT, APP, or CLI), when, and what changed, in the same sentences the Review sheet uses. It covers writes made while the app was closed and lists them with the phone unplugged, though the newest write's changes need the phone connected. It cannot tell you whether a write verified clean, and anything you moved by hand between two writes is counted with the earlier one. Write History →
Apps, pages, folders, the dock, and moving, resizing or removing existing widgets. Removing a widget is one-way: a snapshot can't bring it back, so add it again on the device. Not: creating widgets, wallpaper, icon appearance, blank slots, or removing an app from the home screen. SpringBoard puts omitted apps back, and the validator warns rather than pretends.
Talking to an iPhone means connecting to usbmuxd's UNIX socket. The App Sandbox forbids that, and no entitlement unlocks it (researched, not assumed). So ScreenWright ships the way iMazing, AnyTrans, iExplorer and 3uTools do: Developer ID signed, notarized, Hardened Runtime on, sandbox off. How it's built →
For macOS 15 or later · Free to download; a US$19 license unlocks writing
We've paused the download while we get 1.0 ready. If you'd like to hear when it's out, tell us on the support page: choose “Question” and ask to be told. We'll write to you once, when it ships.
Tell me when it's outDeveloper ID signed and notarized · drag to Applications
screenwright-mcp is inside the app, at ScreenWright.app/Contents/MacOS/screenwright-mcp, signed and notarized with it. Register it by absolute path; with the app in Applications:
claude mcp add screenwright -- /Applications/ScreenWright.app/Contents/MacOS/screenwright-mcpor, in a project's .mcp.json:
{
"mcpServers": {
"screenwright": { "command": "/Applications/ScreenWright.app/Contents/MacOS/screenwright-mcp", "args": [] }
}
}If the app lives somewhere else, don't guess the path: in ScreenWright, choose Help, then Set Up MCP Server, and copy either form. It reads the path of the copy that is running.
Smoke test it by hand:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_devices","arguments":{}}}' \
| /Applications/ScreenWright.app/Contents/MacOS/screenwright-mcpMade by Grizzly Mining Company LLC.