Skip to main content
Glama

The problem (you've probably said one of these)

"I asked ChatGPT for a shortcut and got fourteen steps to tap in by hand."

*"The file imported fine. Then: 'Choose a value for each parameter of this action.'"*

"iOS 27 can build a shortcut from a description, but only on my iPhone 15 Pro, one shortcut at a time, and I can't review or version what it changed."

"Every MCP server I found for Shortcuts only runs shortcuts I already have."

"Every time I fix the family shortcut, everyone has to download it again."

Apple Shortcuts is the most powerful automation layer on the iPhone, and still the hardest thing to get an AI to produce. The file format is undocumented, a structurally valid plist can still break on the device, and nothing catches the difference until you're staring at an error on your phone.

Related MCP server: ShortcutsBridge

The fix

shortcut-forge is an MCP server, a Claude plugin and a Python library that turns "make me a shortcut that…" into a signed .shortcut file that has been checked against the ways shortcuts really fail on iPhone.

You:     "Every time I take my vitamins, log them to Apple Health, tick off today's reminder
          and set up tomorrow's, but never create duplicates."
Claude:  → shortcut_library("supplements") → shortcut_from_template("supplement-tracker", …)
         ✓ 750 actions · 0 lint errors · signed on your Mac
         → ~/Downloads/shortcut-forge/Supplement Check.shortcut   (AirDrop / iCloud Drive → tap → Add)

Apple "Describe a Shortcut" (iOS 27)

Asking a chatbot

Other Shortcuts MCPs

shortcut-forge

Works from Claude, Codex, ChatGPT, Cursor…

–

✓

some

✓

No new iPhone required

needs iPhone 15 Pro+ / Apple silicon

✓

✓

✓

Output you can read, diff, version, review

–

text

varies

JSON spec + plist

Checked against real on-device failures

n/a (native)

–

structure only

15 semantic rules

Signed and importable on iPhone

✓ (native)

–

rarely

✓ auto on macOS

Updates without re-downloading

–

–

–

remote config + update check

Shared, remixable library

–

–

–

✓ 20+ entries

Apple's built-in builder is great for quick personal one-liners and lives right in the app; use it. Reach for shortcut-forge when you want an AI you already use to build something bigger, reviewable and shareable.

Install

Claude Code (plugin = MCP server + skill + /shortcut command)

/plugin marketplace add Hyunki6040/shortcut-forge
/plugin install shortcut-forge@shortcut-forge

Claude Desktop: double-click shortcut-forge.mcpb from Releases, or:

{ "mcpServers": { "shortcut-forge": { "command": "uvx", "args": ["shortcut-forge", "mcp"] } } }

OpenAI Codex

codex mcp add shortcut-forge -- uvx shortcut-forge mcp

ChatGPT, Gemini, any chatbot: connect over HTTP (shortcut-forge mcp --http) or, with no MCP at all, paste prompts/LLM_PROMPT.md and drop the JSON it writes into the Mac watch folder (below). Cursor, VS Code, Windsurf, Gemini CLI: see docs/CLIENTS.md.

Python / CLI

uv tool install shortcut-forge        # or: pipx install shortcut-forge
shortcut-forge template supplement-tracker --sign

Mac auto-signing: drop a spec, get a shortcut

iOS only imports signed shortcuts, and only a Mac can sign them. shortcut-forge makes that invisible:

shortcut-forge mac install-agent      # launchd agent, starts at login
iCloud Drive/Shortcut Forge/          ← drop *.json specs or *.unsigned.shortcut (from any device or AI)
iCloud Drive/Shortcut Forge/Signed/   ← signed .shortcut appears in seconds → open it on your iPhone
iCloud Drive/Shortcut Forge/Failed/   ← anything that failed lint, with a .log explaining why

Ask ChatGPT on your phone for a spec, save it to Files, and the shortcut is ready on the same phone before you finish your coffee. In Claude Desktop / Claude Code on a Mac, signing happens inside the tool call.

What people build with it

From the Open Shortcut Library. Every one is a readable spec, lint-clean in CI.

Shortcut

What it does

🌤

Morning Brief

Your messy thoughts → a 3-line plan by Apple Intelligence → a reminder

🎯

Focus Block

Blocks 25/50/90 min on your calendar from right now

✅

Meeting → Action Items

Notes in, reminders out, summary on the clipboard

🌐

Clipboard Translate

Translate whatever you copied, result back on the clipboard

☕️

Caffeine Log

One tap → Apple Health, warns past 400 mg

💸

Expense Log

Amount + category → CSV in Stored Content → paste into your sheet

🅿️

Parking Spot

Save where you parked, open it in Maps later

📡

Webhook Trigger

POST JSON to n8n / Zapier / Home Assistant

🐙

GitHub Issue

File an issue from your phone

🍱

Lunch Picker

Reads options from a JSON URL: edit once, every phone updates, no reinstall

💊

영양제 체크 (the original)

The real 1,073-action shortcut that started this project. Two people, ten time slots, alternate-day doses, Health + Reminders + Apple Intelligence

…and more: mood journal, sleep diary, grocery list, weather voice brief, low-battery nudge, water log.

Built something? Share it → Tell your AI "submit this to the shortcut-forge library".

Use it

Plain language in any MCP client:

  • "Make a shortcut that asks how I slept and every Sunday has Apple Intelligence summarise the week."

  • "Start from the library's expense log, but in won and with my categories."

  • "Here's my exported shortcut. Why does it crash?" → shortcut_lint + shortcut_inspect

Python: variables work in f-strings.

from shortcut_forge import Shortcut

sc = Shortcut("Hello", version="1.0.0")
name = sc.ask("What's your name?")
with sc.if_(name, "contains", "Claude") as br:
    sc.notify("Hi twin", f"Nice to meet another Claude, {name}")
    br.otherwise()
    sc.notify("Hi", f"Welcome, {name}")
sc.storage_set("last_name", name)       # iOS 27 Stored Content, done right
sc.health_log("Vitamin D", "50")        # mcg → mg handled for you
sc.save("Hello.unsigned.shortcut")

JSON (what the MCP tools and chatbots write): 50+ step types, plus a raw escape hatch for any action.

{"name": "Hello", "version": "1.0.0", "actions": [
  {"ask": "What's your name?", "as": "name"},
  {"if": ["{{name}}", "contains", "Claude"],
   "then": [{"notify": "Hi twin", "body": "{{name}}"}],
   "else": [{"notify": "Hi", "body": "Welcome, {{name}}"}]}
]}

MCP tools

Tool

What it does

shortcut_build

JSON spec → .shortcut, always linted, signed on macOS

shortcut_library

Browse / fetch 20+ community shortcuts as starting points

shortcut_from_template

supplement-tracker (multi-user), water-log

shortcut_lint

15 rules (SF000–SF014) for any unsigned shortcut, including ones exported from the app

shortcut_inspect

Indented outline of a shortcut

shortcut_sign

shortcuts sign wrapper, verifies the AEA1 header

shortcut_publish

Sign + manifest.json so installed copies can update themselves

shortcut_submit

Package your shortcut + PR commands for the library

shortcut_llm_prompt

System prompt for chatbots without MCP

shortcut_reference

spec · pitfalls · lint-rules · health-types · templates · library · ios27

Field notes: why "it imported" isn't "it works"

We built a two-person tracker by having Claude generate the plist. It took more than a dozen import → run → screenshot rounds. Every failure was invisible at build time:

What we wrote

What the iPhone did

Rule

Stored Content set from a variable

Saved nothing, no error

SF001

Health sample "77.4 mcg" of B12

Logged 77,400,000 mcg (the unit string is read as grams)

SF003

If <dictionary value> is "Lunch"

Comparison field empty → run aborted

SF005

Delete a stored key that isn't there

Error 16

SF002

Mark found reminders as done

A picker popped up mid-run

SF007

Get Contents of URL on every run

Offline once → whole shortcut aborts

SF014

Create tomorrow's reminder

Duplicates on every run

builder

The builder can't produce these; the linter catches them in any shortcut. Full notes: PITFALLS.md.

What is a .shortcut file?

  • A .shortcut file (not .short or .shortcuts) is an Apple Shortcuts workflow: a binary property list (WFWorkflowActions, WFWorkflowIcon, …) where every action is an identifier like is.workflow.actions.gettext plus parameters. Variables are "token strings" with UTF-16 offsets.

  • Since iOS 15, shared shortcut files must be signed. A signed file is an Apple Encrypted Archive whose first bytes are AEA1. Unsigned plists import on a Mac but iOS refuses them.

  • Signing modes: anyone (any device can import) or people-who-know-me (contacts only). Only macOS can sign (shortcuts sign), which is why shortcut-forge automates the Mac side.

  • .wflow was the format of the old Workflow app that became Shortcuts; iCloud links (icloud.com/shortcuts/…) are snapshots created from the app and can't be generated or updated programmatically.

FAQ

Do I need a Mac? To sign, yes (Apple's rule). Building and linting run anywhere; the watch-folder agent lets one Mac sign for every device you own. Does my data leave my machine? No. The server runs locally; nothing is uploaded. Library shortcuts that use remote_config fetch only the JSON URL they name. Is this affiliated with Apple or Anthropic? No. It is an independent open-source project. iOS 26 or older? Most actions work; Stored Content needs iOS 27 and Use Model needs Apple Intelligence (the linter flags these as SF013).

Roadmap: the update problem (help wanted)

Today every shortcut fix means re-sign → re-share → everyone re-downloads and taps "Replace". v0.2 ships the first answers (remote_config for data, update_check + publish for code, a signing watch folder). Next is a Shortcut Hub: one-command publish to GitHub, a stable install URL that always serves the latest version, settings that survive updates, a signing relay for teams, and an experimental loader pattern. Read ROADMAP.md and pick something. Device reports from real iPhones are the most valuable contribution of all.

Contributing

  • Share a shortcut → LIBRARY.md

  • Found a new way shortcuts break? Open a pitfall issue with the error screenshot and the smallest spec; it becomes a lint rule and a builder fix.

  • Code → CONTRIBUTING.md · agents read AGENTS.md

MIT licensed. Not affiliated with Apple Inc. or Anthropic. "Shortcuts" and "Siri" are trademarks of Apple Inc.

If shortcut-forge saved you a round of error screenshots, a ⭐ helps the next person find it.

Keywords: Apple Shortcuts MCP, iOS Shortcuts MCP server, Siri Shortcuts AI generator, create .shortcut file programmatically, sign shortcut macOS CLI, Claude Shortcuts, Codex Shortcuts, ChatGPT Shortcuts, iOS 27 Shortcuts Stored Content, Apple Health shortcut, shortcut library.

Available Tools

10 tools
shortcut_buildA

Build a .shortcut from a JSON spec ({"name": ..., "actions": [...]}) and lint it.

See shortcut_reference(topic="spec") for every step type. Set sign=true on macOS to produce an importable signed file. Returns paths, action count and lint findings (fix all errors).

NameRequiredDescriptionDefault
signNo
specYes
sign_modeNoanyone
output_pathNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does substantial work: it discloses the write artifact (.shortcut file), the platform constraint on signing (macOS), the lint-pass behavior with 'fix all errors' guidance, and the return payload (paths, action count, lint findings). It stops short of covering overwrite behavior on an existing output_path or any credential requirements for signing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the core action and the spec shape, then reference pointer, then signing condition, then return values. Only blemish is a stray line break mid-sentence that slightly fragments the second thought; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Returns are described, which compensates for the absent output schema, and the required spec parameter is illustrated. But for a mutating build tool with 0% schema coverage and no annotations, the missing semantics for sign_mode and output_path plus the lack of overwrite/error behavior leave real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate; it explains the required spec object's top-level keys and the sign flag's macOS condition. However, sign_mode (a free-form string defaulting to "anyone" with no enum or description) and output_path are left entirely undefined, which is a meaningful gap on a signing-related parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: builds a .shortcut file from a JSON spec and lints it, with the spec shape sketched inline ({"name": ..., "actions": [...]}). An agent can distinguish it from shortcut_lint or shortcut_sign, though the fact that linting is bundled here (rather than deferring to the sibling shortcut_lint) is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real conditional guidance: set sign=true on macOS for an importable signed file, and consult shortcut_reference(topic="spec") for step types. It does not say when to choose this over shortcut_from_template or the standalone shortcut_lint/shortcut_sign siblings, so no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_from_templateC

Generate a shortcut from a ready-made template.

template: "supplement-tracker" (multi-user supplements -> Apple Health + self-maintaining reminders, 7-day Apple Intelligence report) or "water-log". config: template config; omit to get the example. Call shortcut_reference(topic="templates") to see each template's config shape.

NameRequiredDescriptionDefault
signNo
configNo
templateYes
sign_modeNoanyone
output_pathNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not disclose whether generation writes a file, what output_path does, what signing means or when it is required, or what side effects occur. Only the template/config behavior is partially described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and free of filler. Its brevity is appropriate, though the space saved is not used to cover important missing parameter semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generation tool with five parameters, no annotations, no output schema, and 0% schema description coverage, the description is too thin. Missing sign, sign_mode, and output_path semantics leave an agent unable to call it correctly beyond the simplest template-only case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only covers template and config. The sign, sign_mode, and output_path parameters are completely undocumented in both schema and description, leaving three of five parameters without semantic guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Generate a shortcut from a ready-made template.' That distinguishes it reasonably well from sibling shortcut_build by implying template-based rather than freeform construction, though it does not explicitly contrast the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful context for using config (omit it to get the example) and points to shortcut_reference for template config shapes. However, it does not say when to choose this over shortcut_build, nor does it mention any prerequisites or conditions for template use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_inspectB

Return an indented, human-readable outline of an unsigned .shortcut file.

NameRequiredDescriptionDefault
pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden. 'Return ... outline' implies a read-only operation and 'unsigned' connotes a scope limit, adding some value, but it says nothing about error behavior for signed/missing files, or whether it parses or just dumps structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Terse to the point of under-specification, but structurally clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values needn't be described, and the operation is simple with one param. Still, with zero annotation coverage and an undocumented path parameter, the definition leaves the agent to infer the file-path semantics on its own.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the only parameter ('path') is undocumented in both schema and description. The description never mentions what the path points to or what format it takes, so it adds no meaning beyond guessing from the tool name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (return) and resource (indented, human-readable outline of an unsigned .shortcut file). The 'unsigned' qualifier implicitly separates it from shortcut_sign/lint siblings, though no sibling is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use, prerequisites, or alternatives. The word 'unsigned' hints that signed files are out of scope but never states what to do with them or why one would inspect rather than lint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_libraryA

Browse the community shortcut library (20+ ready shortcuts: productivity, health, money, dev, home...).

No slug: list entries matching query (name/description/tags). With slug: return its meta, its spec (or template config) to use as a starting point, and the signed download link if published.

NameRequiredDescriptionDefault
slugNo
queryNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description must carry the full behavioral burden; it does disclose the per-mode return content and the conditional 'signed download link if published'. However, it never states that this is a read-only browse operation, whether auth is required for download links, or how large the list result can be.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short blocks, front-loaded with the resource and its scope, then the mode switch. Efficient overall, though the mid-sentence line breaks and the parenthetical '(or template config)' make it slightly denser than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description is the only source of return-value information; it covers detail mode (meta, spec, download link) but says nothing about the shape of list results, result limits, or pagination. Adequate to call correctly, incomplete for interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description has to compensate, and it largely does: `query` is defined as matching name/description/tags, and `slug` is defined as switching from list mode to detail mode with a specific payload. It adds real meaning over the bare, undocumented schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Browse the community shortcut library') and gives concrete content scope (20+ ready shortcuts across categories). It implies a clear separation from siblings like shortcut_build/shortcut_inspect, but never names an alternative, so it stays short of a full 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly defines the two modes: no slug → list matching entries, with slug → fetch that entry's meta/spec/download link. That is clear operational context, but there is no statement about when to prefer a sibling tool (e.g. shortcut_inspect or shortcut_from_template) instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_lintB

Lint an unsigned .shortcut file against known on-device failure patterns (rules SF000-SF013).

NameRequiredDescriptionDefault
pathYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations and no output schema, the description carries the full disclosure burden. It does not say whether linting is read-only or rewrites the file, what a result looks like (violation list vs pass/fail), or whether the referenced rules can be suppressed; only the rule-ID range hints at behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with zero filler; the rule range is parenthetical and secondary in emphasis.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and an undocumented parameter, the definition leaves key questions open: is it read-only, does it modify or emit anything, what does a failure report look like, and are there prerequisites (e.g., platform or dependency on shortcut_reference rule data).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'path' parameter is undocumented in the schema. The description partially compensates by implying the path must point to an unsigned .shortcut file, but adds no format, relative-vs-absolute, or validation details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (lint) and resource (unsigned .shortcut file) plus the rule set (SF000-SF013), which lets an agent distinguish it from shortcut_build and shortcut_sign. It does not explicitly separate itself from the closest sibling, shortcut_inspect, leaving mild ambiguity between 'lint' and 'inspect'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'unsigned' implies a precondition (lint before signing), which is useful implicit usage context. However, nothing states when to prefer shortcut_inspect, shortcut_reference, or shortcut_sign instead, and no exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_llm_promptA

Return a copy-paste system prompt that teaches any chatbot (ChatGPT, Gemini...) to write specs.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does convey that the tool only produces text (no mutation, no side effects implied by 'Return a copy-paste system prompt'), but says nothing about how the prompt is tailored, whether it varies, or what triggers different output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb and outcome up front and no filler. Nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and no parameters, the description need only establish intent, which it does. A short note on what the generated prompt targets (spec-writing) is given; the only minor gap is any hint about how the prompt is customized.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns a copy-paste system prompt for teaching chatbots to write specs. That is clearly distinct from the sibling tools (build, inspect, sign, lint), though the description doesn't name a sibling to differentiate against explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — call it when you want a prompt to hand to another LLM — but there is no explicit statement of when to use this versus e.g. shortcut_reference or shortcut_build, and no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_publishC

macOS: build + sign + write manifest.json so installed copies can update themselves.

Adds a daily update check (spec.update_manifest = base_url/manifest.json) to the shortcut. Host the two output files at base_url (GitHub raw/Pages/S3). Bump version for every release.

NameRequiredDescriptionDefault
specYes
notesNo
versionYes
base_urlYes
output_dirNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It does reveal a meaningful side effect — that the emitted manifest injects spec.update_manifest into the shortcut, changing its runtime update behavior — but says nothing about whether existing output files are overwritten, where files are written, required signing credentials, or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs, front-loaded with the verb chain and the outcome. Dense and largely waste-free, though the hosting sentence drifts slightly into deployment advice rather than tool contract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter mutation tool with a nested `spec` object, no annotations and no output schema, the description leaves major gaps: the two output files are never named, output_dir is unexplained, and the return value/error modes are unknown. It is not sufficient for an agent to call this correctly without reading the schema or guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 5 parameters, so the description must compensate and only partially does. It clarifies `version` (must be bumped per release), `base_url` (hosting location) and the `spec` mutation via spec.update_manifest, but `notes` and especially `output_dir` — which determines where the two files land — are never explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific compound action (build + sign + write manifest.json) with a stated goal (self-updating installed copies), which is distinguishable from shortcut_build and shortcut_sign as the end-to-end publish step. It never explicitly says it subsumes those siblings, so the differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers real operational guidance: host the two output files at base_url (GitHub raw/Pages/S3) and bump `version` for every release. It gives no guidance on when to choose this over calling shortcut_build and shortcut_sign separately, and no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_referenceB

Docs for building shortcuts. topic: spec | pitfalls | lint-rules | health-types | templates | library | ios27.

NameRequiredDescriptionDefault
topicNospec

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It implies a safe read-only reference lookup and lists topics, but does not explicitly state read-only behavior, permissions, or rate limits. For a low-risk docs tool this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with zero waste. The purpose is front-loaded and the topic list follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional parameter and an output schema present, the description provides enough to call the tool correctly by listing topics. It stops short of explaining how topics map to results or when to prefer this over siblings, but the output schema reduces the need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does enumerate valid topic values (spec, pitfalls, lint-rules, health-types, templates, library, ios27), which is useful, but it does not explain what each topic returns or note the default value beyond what the schema shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it provides documentation for building shortcuts and enumerates topic areas, making the resource clear. It does not explicitly differentiate itself from sibling tools like shortcut_llm_prompt or shortcut_build, but the topic list gives enough specificity to distinguish a reference lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as shortcut_llm_prompt or shortcut_build. The phrase 'Docs for building shortcuts' implies a reference use case, but no conditions or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_signB

Sign a .shortcut with the macOS shortcuts CLI so iOS can import it. mode: anyone | people-who-know-me.

NameRequiredDescriptionDefault
modeNoanyone
pathYes
output_pathNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It mentions the macOS CLI dependency and signing purpose, but does not disclose side effects, permissions required, overwrite behavior for output_path, or what happens to the input file.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the core action and purpose. Every sentence adds relevant context without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It leaves key behavioral and parameter details unexplained, so an agent would need to infer how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only names two mode values ('anyone | people-who-know-me') and does not explain the required path parameter or the output_path parameter, leaving most parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: sign a .shortcut using the macOS shortcuts CLI, with a clear purpose of enabling iOS import. It does not explicitly distinguish itself from siblings like shortcut_submit or shortcut_publish, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'so iOS can import it' implies when to use this tool, but there is no explicit guidance on alternatives, prerequisites, or when not to use it. The mode options are named but not explained in terms of usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shortcut_submitC

Package a shortcut for the open-source library (github.com/Hyunki6040/shortcut-forge/library).

Validates the spec and metadata, lints it, and returns the exact files plus the git/gh commands to open a pull request. Encourage the user to run it on their iPhone first and fill verified_on.

NameRequiredDescriptionDefault
nameYes
slugYes
specYes
tagsNo
authorYes
categoryYes
descriptionYes
description_koNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the burden. It usefully clarifies that it does NOT actually open the PR but returns the git/gh commands to do so, and that it validates and lints. However, it omits auth requirements, whether spec/metadata are mutated or just checked, and return details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and followed by the verification note. Efficient, though the out-of-schema `verified_on` reference undermines clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-param, 6-required tool with a nested spec object, zero schema descriptions, and no output schema, the description is thin on parameter meaning. It also references a field (`verified_on`) absent from the schema, which will confuse an agent trying to satisfy required inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 8 parameters, so the description must compensate. It mentions spec and metadata vaguely, and even references a `verified_on` field that is not in the schema, while leaving slug, name, author, category, tags, description, and description_ko unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: packages a shortcut for a named library, validates/lints, and returns files plus git/gh commands. It distinguishes the workflow but does not differentiate from siblings like shortcut_publish or shortcut_lint, which overlap in scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only guidance is to encourage the user to run it on their iPhone first and fill `verified_on`, which is a helpful workflow note but not a when/when-not comparison. It never states when to choose this over shortcut_publish or shortcut_lint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.2.1
    • First observedshortcut_build
    • First observedshortcut_from_template
    • First observedshortcut_inspect
    • First observedshortcut_library
    • First observedshortcut_lint
    • First observedshortcut_llm_prompt
    • First observedshortcut_publish
    • First observedshortcut_reference
    • First observedshortcut_sign
    • First observedshortcut_submit

TDQS

A3.5/5.0

Scored across 10 tools

Disambiguation4/5

Each tool targets a distinct stage of the shortcut authoring pipeline (build, template, inspect, sign, lint, reference, library, submit, publish, prompt), so selection is mostly obvious. The only real overlap is shortcut_publish, which internally performs build+sign and could be confused with shortcut_build/shortcut_sign, though its manifest/update purpose is spelled out.

Naming Consistency5/5

Every tool uses the same snake_case `shortcut_` prefix with a clear verb or noun-suffix (build, inspect, sign, lint, publish, submit). The one prepositional name, shortcut_from_template, still fits the pattern and reads naturally.

Tool Count5/5

Ten tools is squarely in the well-scoped range, and each one covers a genuinely different step (authoring, templating, validation, signing, distribution, docs, discovery). Nothing appears redundant or padded.

Completeness4/5

The authoring-to-publishing lifecycle is well covered: build, template, inspect, lint, sign, publish, submit, plus docs and a library. Minor gaps remain — there is no tool to decompile an existing .shortcut back into an editable spec, and no test/run simulation beyond linting, which agents must work around manually.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Connects LLMs to your macOS Shortcuts library, enabling interactive workflows, discovery, and management through AppleScript and CLI integration.
    3
    11
    MIT