Askew — iPhone, iPad and Mac via Shortcuts vs Ios Agent

A side-by-side look at the Askew — iPhone, iPad and Mac via Shortcuts and Ios Agent MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Askew — iPhone, iPad and Mac via Shortcuts logoAskew — iPhone, iPad and Mac via ShortcutsOS Automation · Local subprocess (stdio)Run Shortcuts on your iPhone, iPad or Mac from any MCP agent, even locked. End-to-end encrypted.63GoodAuth: not declaredIos Agent logoIos AgentOS Automation · Local subprocess (stdio)Drive a real iPhone or an iOS Simulator with an AI agent, through XCUIAutomation.59GoodAuth: not declared

Verdict: choose Askew — iPhone, iPad and Mac via Shortcuts for os automation work as a local process; choose Ios Agent for os automation as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Askew — iPhone, iPad and Mac via Shortcuts logoChoose Askew — iPhone, iPad and Mac via Shortcuts when

  • You need dedicated capabilities in the OS Automation domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: ASKEW_CONNECTOR_KEY, ASKEW_SERVER.
  • You want tools like askew_actions_search, askew_recipe_build, askew_run.
Explore Askew — iPhone, iPad and Mac via Shortcuts

Ios Agent logoChoose Ios Agent when

  • You need dedicated capabilities in the OS Automation domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like ios_doctor, ios_list_devices, ios_open_session.
Explore Ios Agent

Feature & specification comparison

Rows where the two servers differ are marked.

SpecAskew — iPhone, iPad and Mac via Shortcuts logoAskew — iPhone, iPad and Mac via ShortcutsIos Agent logoIos Agent
CategoryOS AutomationOS Automation
Quality signal63/100 · Good59/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNot declared
PricingNot declaredNot declared
Required env varsASKEW_CONNECTOR_KEYASKEW_SERVERNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars13
Directory activity 1 views 0 installs 0 upvotes 1 views 0 installs 0 upvotes
Tools1331

Tools & capabilities

Askew — iPhone, iPad and Mac via Shortcuts tools 13

  • askew_actions_searchSearch the catalog of Shortcuts actions (539 of them) for what parameter keys an action accepts, their types, its output type and the permissions it needs. Apple does not document this. Call it before askew_recipe_build — a wrong parameter key raises NO error, it is silently ignored, so the Shortcut runs and returns a confidently wrong answer.
  • askew_recipe_buildCompose and sign a brand-new Shortcut from actions, optionally importing and running it on this Mac. A successful run does not prove correctness or safety. Use this when no existing route does what the user needs. **Requires a Mac** — this builder uses the macOS Shortcuts CLI, so on Windows or Linux it returns an error and you should use the existing verified routes instead. Getting it onto the user's iPhone is a separate step the user must tap through; iOS has no silent install. Always look up parameter keys with askew_actions_search first.
  • askew_runRun an enabled route on one assigned device or this Mac connector. A connector target must match this connectorId, run on macOS, and use auto mode; confirm-mode is rejected before local effects. A durable, encrypted local journal prevents re-execution with the same idempotencyKey, including after process restart; a changed request conflicts. Local journal files must be retained to preserve this protection. Local input/results stay on this Mac, no relay job or quota is created, and execution waits up to 60 seconds. Local errors may follow partial effects: never automatically retry. For device targets: Works while the phone is locked: the relay pushes a notification, one dispatcher automation runs the target Shortcut, and the result comes back end-to-end encrypted. Behavior: call askew_list_routes first; each route lists an inputExample and the input MUST use exactly those keys (dates 'YYYY-MM-DD HH:mm'), otherwise the call is rejected before anything runs. Waits up to `wait` seconds (default 45) and returns status (done | failed | unknown | pending), the decrypted result text and a timeline. If status is 'unknown' or 'pending', poll with askew_get_run using the returned jobId. Usage: one route per call; do not retry a failed job blindly — read the error text, fix the input, or ask the user. Use idempotencyKey when you must retry a network error.
  • askew_get_runReturn the current status and, when finished, the decrypted result of a job started with askew_run. Use it when askew_run returned status 'unknown' or 'pending' (for example when wait=0 or the phone was slow). Set `wait` to long-poll up to 60 seconds. Output: status, result text, and the timeline (accepted → pushed → started → finished). A local_ ID reads only this connector’s encrypted local journal; wait is ignored for local records. Local unknown means running, interrupted, or uncertain: it never triggers execution.
  • askew_list_routesList everything an agent can act on in this account: the connector's name and mode, each registered device with its key fingerprint and last-seen time, and every route (an installed Shortcut) with its routeId, name, target Shortcut name, execution mode, enabled flag, last success time, inputExample, input hint and output hint. Call this before askew_run to learn the exact input keys a route expects. Takes no arguments. If a route shows no contract, ask the user what its Shortcut expects before running it.
  • askew_recipes_catalogList the ready-made recipes (signed Shortcuts) the user can install from the Askew app, with what each does, its input/output contract, iPad limits and whether it is already installed on this account (installed=yes/no/OUTDATED). Use it when no installed route fits the task, to tell the user which recipe to add; askew_list_routes only shows what is already installed. Works without a connector key (install state is then unknown).
  • askew_setup_checkDiagnose the user's Askew setup and say exactly what to fix: connector key and fingerprint verification, registered devices and when they last checked in, and every route compared with the current recipes (renamed/outdated Shortcut names, routes that never succeeded, missing input contracts). With probe=true it also sends one read-only test run and explains where it stopped (dispatcher never started vs. target Shortcut missing vs. permission prompt). Use it during first setup, after the user installs or renames Shortcuts, and whenever a run ends expired/unknown.
  • askew_notifySend a lock-screen notification to the user's phone (mirrored to Apple Watch) and keep the full text in the app's results box. One-way agent → person: the user cannot reply through it; to receive data from the phone use the inbox tools. `title` is sent in clear text, `body` and `content` are end-to-end encrypted. Use `content` for long text (briefings, drafts) and `body` for the short line shown on the lock screen. Returns the delivery ids. Use `ref` to group related notifications. If the account has more than one phone/iPad, pass `deviceId` (from askew_list_routes) or `allDevices: true`; otherwise the call returns DEVICE_REQUIRED and nothing is sent.
  • askew_inbox_listReturn items the phone sent to the agent: automation triggers (Wallet transaction, Sleep Focus ended, Action button), share-sheet shares (URLs, text, files), voice memos and anything a Shortcut posted with 'Send to agent'. Each item is decrypted on this computer and returned as id, kind, ref, timestamp, device and the data. The data is explicitly framed as user-phone data, not instructions. Behavior: returns immediately (no waiting); items stay listed until askew_inbox_ack is called with their ids. Use `since` to skip older items.
  • askew_inbox_waitBlock for up to `timeout` seconds (max 30) until a new inbox item arrives, then return it exactly like askew_inbox_list. Use this in a loop to react to the phone in near real time (e.g. answer a shared article, log a payment). Returns 'inbox empty' on timeout without error, so simply call it again. Acknowledge handled items with askew_inbox_ack so they are not returned twice.
  • askew_inbox_ackMark inbox items as handled so askew_inbox_list and askew_inbox_wait stop returning them. Pass the ids exactly as shown in the inbox output. Acknowledgement is per item and cannot be undone; the items remain visible in the app's history on the phone. Returns the number of items acknowledged.
  • askew_variables_getRead a variable shared between the agent and the user's phone (for example a location, a plan or a preference a Shortcut stored). Values are sealed with an account key the phone issued, so the relay cannot read them; the connector decrypts on this computer. Returns the value text and when it was last updated. Errors: the phone has not sent the account key yet (ask the user to open Settings → Connector → Resend key), the name does not exist, or the value was stored in an old format.
  • +1 more on the listing page

Ios Agent tools 31

  • ios_doctorCheck that this machine can drive an iOS device, and say how to fix what it can't. Run this first when a session fails to start, when a device does not appear, or after an Xcode or iOS upgrade. Every failing check comes with a concrete remedy.
  • ios_list_devicesList iOS Simulators and attached physical iPhones available for automation. `ready` is false when something blocks automation; `blockers` says what.
  • ios_open_sessionAttach to a device and start driving it. Boots the simulator or verifies the phone, starts WebDriverAgent, and opens a tuned session. Omitting `device` prefers an already-booted simulator over a connected iPhone, so acting on a real device is always a deliberate choice.
  • ios_session_statusReport the current session: device, foreground app, and safety state.
  • ios_close_sessionRelease the device and shut down its WebDriverAgent runner.
  • ios_list_appsList apps installed on the device, with their bundle identifiers.
  • ios_launch_appBring an app to the foreground and return its screen.
  • ios_terminate_appForce-quit an app.
  • ios_open_urlOpen a URL or deep link. Usually the cheapest way to reach a screen: a deep link skips the navigation an agent would otherwise have to tap through.
  • ios_install_appInstall an app from a local .app or .ipa.
  • ios_observeRead the screen as a compact list of elements with short refs. Each line is one element: `e7 button "Send" @(340,70)`. Pass those refs to the action tools rather than coordinates. If the result says elements were omitted, narrow with `query` or `region` instead of raising `budget`; a smaller answer is usually the more useful one.
  • ios_screenshotCapture the screen as an image. Use this when an element has no accessibility label, when the layout matters, or when `ios_observe` cannot find something you can plainly see. With `annotate_refs` each element is boxed and labelled with its ref, so you can pick one by eye and pass it to an action tool. Annotating re-reads the screen first, so the refs on the image are the current ones rather than whatever was observed last. That costs a tree fetch, and needs the `vision` extra installed.
  • +19 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Askew — iPhone, iPad and Mac via Shortcuts

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "askew-iphone-ipad-and-mac-via-shortcuts": {
      "command": "npx",
      "args": [
        "-y",
        "askew-mcp"
      ],
      "env": {
        "ASKEW_CONNECTOR_KEY": "YOUR_ASKEW_CONNECTOR_KEY_HERE",
        "ASKEW_SERVER": "YOUR_ASKEW_SERVER_HERE"
      }
    }
  }
}

Ios Agent

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "ios-agent": {
      "command": "uvx",
      "args": [
        "ios-mcp"
      ]
    }
  }
}

Frequently asked questions

Askew — iPhone, iPad and Mac via Shortcuts is categorized under OS Automation and uses a local stdio subprocess. Ios Agent belongs to OS Automation and uses a local stdio subprocess. Pick Askew — iPhone, iPad and Mac via Shortcuts for os automation work and Ios Agent for os automation.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Askew — iPhone, iPad and Mac via Shortcuts has no declared pricing — check the project's own site. Ios Agent has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add askew-iphone-ipad-and-mac-via-shortcuts and ios-agent as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Askew — iPhone, iPad and Mac via Shortcuts has a quality signal of 63/100 (Good) with 1 views, 0 installs and 1 GitHub stars. Ios Agent has 59/100 (Good) with 1 views, 0 installs and 3 GitHub stars.