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 · SCANNED SEP 21

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

Available components

68 Trust /100
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
  • 31 of 98 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2449 tokens (~222/item across 11 items; 11 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 Management10
  • Stability observed for 3 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
  • 96% 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 11 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
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
// .cursor/mcp.json
{
  "mcpServers": {
    "dominic-dk-askew-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "askew-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dominic-dk-askew-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "askew-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add dominic-dk-askew-mcp -- npx -y askew-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dominic-dk-askew-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "askew-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dominic-dk-askew-mcp --command npx --arg -y --arg askew-mcp
# ~/.hermes/config.yaml
mcp_servers:
  dominic-dk-askew-mcp:
    command: "npx"
    args: ["-y", "askew-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dominic-dk-askew-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "askew-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add dominic-dk-askew-mcp -t stdio -c npx -a -y askew-mcp
// mcp.json
{
  "mcpServers": {
    "dominic-dk-askew-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "askew-mcp"
      ]
    }
  }
}
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.

  • 21 Sept 26 −1
    • Stability: 0.07 → unverified security
    • Tool safety: pass → unverified security
    • Schema quality: 1844 → 2449 functional
    • Schema quality: 1844 → 2362 functional
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
    • Package version: 0.1.4 → 0.2.1 functional
    • Package version: 0.1.4 → 0.2.0 functional
  • 20 Sept 26 +11
    • Known CVEs: unverified → pass security
    • Dependency health: unverified → 0.86 functional
  • 19 Sept 26 −10
    • Known CVEs: pass → unverified security
    • Tool safety: pass → unverified security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Capabilities: pass → unverified functional
    • Dependency health: 0.86 → unverified functional
    • Tool coverage: 100 → unverified functional
    • Stability: unverified → 0.03 functional
    • First check of Schema quality: unverified functional
    • Package version: 0.1.3 → 0.1.4 functional
  • 18 Sept 26 68

    First indexed and scored.

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 21 Sept 2026 · Analysed npm/askew-mcp@0.2.1

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 98 packages
Packages resolved 98
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 11 exposed · ~2,449 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.
waitintegerSeconds 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
sincestringISO 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
sincestringISO 8601 timestamp. Only items created after this moment count. Default: any unacknowledged item.
timeoutintegerSeconds 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 ~289

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.

NameTypeReqDescription
bodystringShort notification body shown on the lock screen and Apple Watch. End-to-end encrypted; the relay only carries an encrypted hint.
contentstringLonger 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.
deviceIdstringSend to one device only (id from askew_list_routes). Default: every registered device.
refstringOptional 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
inputstringInput 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.
sendToPhonebooleanUpload 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.
verifybooleanImport 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_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
idempotencyKeystringOptional 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…
inputyesInput 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…
routeIdstringRoute id from askew_list_routes (e.g. 'rt_…'). Give either routeId or routeName; routeId wins when both are present.
routeNamestringRoute name from askew_list_routes (e.g. 'calendar.add'). Case-sensitive. Use this when you know the name but not the id.
targetobjectOne 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.
waitintegerDevice 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_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.
valueyesThe 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.

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 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 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 11 tools: askew_actions_search, askew_recipe_build, askew_run, askew_get_run, askew_list_routes, and 6 more. Their descriptions and schemas cost roughly 2,449 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 21 September 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.