Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Askew — iPhone, iPad and Mac via Shortcuts

NPM · ASKEW-MCP

Run iPhone Shortcuts through an encrypted relay, or assigned auto-mode Shortcuts on this Mac.

Available components

−3 this week 78 Trust /100

Last scanned (1 hour ago)

Scores higher than 58% of npm servers

Category IoT and Hardware

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3774 tokens (~290/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
  • Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 97% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "askew_notify" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −3
    • Stability: pass → 0.80 functional
  • 31 Oct 26 0
    • Security disclosure: unverified → fail ▼ functional
  • 30 Oct 26 0
    • Security disclosure: fail → unverified ▼ functional
  • 18 Oct 26 +1
    • Stability: 0.97 → pass security
  • 16 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Oct 26 +1
    • Security disclosure: unverified → fail ▼ functional
  • 11 Oct 26 +3
    • Security disclosure: fail → unverified ▼ functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/askew-mcp@0.3.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 13 exposed · ~2,903 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
askew_actions_search ~108

Search 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.

NameTypeReqDescription
limitinteger––
querystringyesPart of an action identifier, its display name, or a parameter key.

No output schema declared.

No examples provided.

askew_get_run ~190

Return 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.

NameTypeReqDescription
jobIdstringyesJob id returned by askew_run: job_… for a phone or local_… for this connector’s local journal.
waitinteger–Seconds to long-poll for a terminal status, 0–60 (default 0 = return the current status immediately).

No output schema declared.

No examples provided.

askew_inbox_ack ~113

Mark 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.

NameTypeReqDescription
idsarrayyesOne or more inbox item ids (the 'id=' field in askew_inbox_list / askew_inbox_wait output). Acknowledged items stop appearing.

No output schema declared.

No examples provided.

askew_inbox_list ~173

Return 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.

NameTypeReqDescription
sincestring–ISO 8601 timestamp (e.g. '2026-09-18T09:00:00Z'). Only items created after this moment are returned. Default: all unacknowledged items.

No output schema declared.

No examples provided.

askew_inbox_wait ~174

Block 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.

NameTypeReqDescription
sincestring–ISO 8601 timestamp. Only items created after this moment count. Default: any unacknowledged item.
timeoutinteger–Seconds to wait for a new item, 1–30 (default 30). Returns early as soon as an item arrives; returns 'inbox empty' on timeout.

No output schema declared.

No examples provided.

askew_list_routes ~117

List 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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

askew_notify ~387

Send 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.

NameTypeReqDescription
allDevicesboolean–Send to every registered phone/iPad. Each device counts as one round trip against the daily limit. Only use it when the user asked for all devices.
bodystring–Short notification body shown on the lock screen and Apple Watch. End-to-end encrypted; the relay only carries an encrypted hint.
contentstring–Longer text kept in the app's results box (e.g. a full briefing or draft). End-to-end encrypted. Markdown is shown as plain text.
deviceIdstring–Device to notify (id from askew_list_routes). Required when the account has more than one phone/iPad, unless allDevices is true. With a single device it may be omitted.
refstring–Optional reference (≤200 chars) to group deliveries in the results box, e.g. 'morning-briefing' or an inbox item id you are answering.
titlestringyesNotification title, 1–200 chars. Sent to the phone in clear text, so keep sensitive details in body/content.

No output schema declared.

No examples provided.

askew_recipe_build ~290

Compose 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.

NameTypeReqDescription
inputstring–Input to pass on the verification run, usually one line of JSON.
namestringyesName for the new Shortcut. Must not collide with one already on the Mac.
sendToPhoneboolean–Upload the signed file and plaintext workflow so the user can inspect it in Shortcuts on their iPhone. The relay summary is based on submitted workflow, not verified file contents. Run output is neve…
stepsarrayyesThe actions, in order.
verifyboolean–Import it on this Mac and run it once, including any side effects of its actions. Use only when those effects are authorized; false signs without importing or running. A successful run does not prove…

No output schema declared.

No examples provided.

askew_recipes_catalog ~143

List 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).

NameTypeReqDescription
querystring–Optional word to filter by (route id, name, description or app), e.g. 'photo', 'contacts', 'health'. Omit to list every recipe.

No output schema declared.

No examples provided.

askew_run ~612

Run 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.

NameTypeReqDescription
idempotencyKeystring–Optional client-chosen key (1–200 chars) to return an existing run on retries. Local Mac records persist on this computer: reuse the same key and input after uncertainty; never change/remove the key…
input–yesInput for the Shortcut. MUST follow the route's inputExample from askew_list_routes: the same JSON keys, dates as 'YYYY-MM-DD HH:mm', send "" for keys you do not need. A JSON object for routes whose…
routeIdstring–Route id from askew_list_routes (e.g. 'rt_…'). Give either routeId or routeName; routeId wins when both are present.
routeNamestring–Route name from askew_list_routes (e.g. 'calendar.add'). Case-sensitive. Use this when you know the name but not the id.
targetobject–One enabled target from the route targets list. Omit to use the default device; never broadcast. A connector target must be this connectorId on macOS and runs locally without relay quota.
waitinteger–Device targets: seconds to wait for the result, 0–60 (default 45); 0 returns pending for askew_get_run. Local Mac targets wait up to 60 seconds and return a local_ job ID that can be read on this con…

No output schema declared.

No examples provided.

askew_setup_check ~213

Diagnose 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.

NameTypeReqDescription
probeboolean–Also send one read-only test run (device.status or echo) to the phone to check the dispatcher, its automation and permissions. Ask the user to keep the phone UNLOCKED first so they can tap "Always Al…
probeRoutestring–Which read-only route to probe with. Default: device.status if installed, otherwise echo.
waitinteger–Seconds to wait for the probe result.

No output schema declared.

No examples provided.

askew_variables_get ~158

Read 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.

NameTypeReqDescription
namestringyesVariable name as stored (case-sensitive), e.g. 'home', 'mood', 'today.plan'. Names are set by askew_variables_set or by the phone's Shortcuts.

No output schema declared.

No examples provided.

askew_variables_set ~225

Write a variable shared between the agent and the user's phone. The value (a string or a JSON object) is encrypted with the account key before leaving this computer, and the phone's Shortcuts read it with the same key; the relay stores only ciphertext. Writing an existing name replaces the value; there is no versioning. Returns the name and update time. Errors: the account key has not arrived yet (ask the user to open Settings → Connector → Resend key). Use it for data a Shortcut should pick up later (e.g. 'today.plan'), not for large blobs.

NameTypeReqDescription
namestringyesVariable name (case-sensitive), e.g. 'home' or 'today.plan'. Writing an existing name replaces its value; the name is authenticated with the value, so it cannot be read back under another name.
value–yesThe value to store: a plain string, or a JSON object (stored as JSON text). Encrypted with the account key before it leaves this computer; the phone's Shortcuts read it with the same key.

No output schema declared.

No examples provided.

Install

How do I install the Askew — iPhone, iPad and Mac via Shortcuts MCP server?

Askew — iPhone, iPad and Mac via Shortcuts runs locally as an npm package, launched with npx -y askew-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · askew-mcp

# add to Claude Code
claude mcp add dominic-dk-askew-mcp -- npx -y askew-mcp
Common questions

What is the Askew — iPhone, iPad and Mac via Shortcuts MCP server?

Askew — iPhone, iPad and Mac via Shortcuts is an MCP server listed in the public MCP registry as io.github.Dominic-DK/askew-mcp. Run iPhone Shortcuts through an encrypted relay, or assigned auto-mode Shortcuts on this Mac. This page covers its npm package (askew-mcp).

Is the Askew — iPhone, iPad and Mac via Shortcuts MCP server safe to use?

Askew — iPhone, iPad and Mac via Shortcuts scores 78 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Askew — iPhone, iPad and Mac via Shortcuts MCP server expose?

Askew — iPhone, iPad and Mac via Shortcuts exposes 13 tools: askew_actions_search, askew_recipe_build, askew_run, askew_get_run, askew_list_routes, and 8 more. Their descriptions and schemas cost roughly 2,903 tokens of context every time the server is loaded.

Is the Askew — iPhone, iPad and Mac via Shortcuts MCP server still maintained?

Askew — iPhone, iPad and Mac via Shortcuts is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Askew — iPhone, iPad and Mac via Shortcuts MCP server under?

Askew — iPhone, iPad and Mac via Shortcuts declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.