Action Relay - Automatically generate MCP tools to control any macOS application

Mar 1, 2026

One of the things I've always loved about macOS is how friendly it is to automation. Back in the day, I was a serious user of tools like Keyboard Maestro and AppleScript to automate my workflows. These days most new apps favor Shortcuts / AppIntents but the core capability remains: a generally supported way for applications to expose methods and data.

When Apple Intelligence was announced, I waited with bated breath for it to take advantage of this ecosystem. It even looks like it's on the roadmap!.

But I'm impatient and I'm trying out Claude's Max plan, so with tokens to burn I set out to make this dream a reality.

Introducing Action Relay

Shortcut Actions
Shortcut Actions
Many apps publish actions for use in shortcuts
UTM Actions
UTM Actions
UTM actions available in shortcuts
UTM Tools
UTM Tools
Intents are converted to MCP tools
Notes
Notes
Apple Notes Actions
Creating a note
Creating a note
Claude uses Action Relay to create a note in Notes.app
Adding a table
Adding a table
Modifying existing notes

Action Relay is a proof-of-concept MCP server for macOS. Point it at any app that ships App Intents and it discovers every intent, generates MCP tool schemas, and lets you execute them — all through the same XPC pipeline that Shortcuts.app uses internally.

Existing MCP servers in this space either wrap the shortcuts CLI (requiring pre-created Shortcuts for each action) or use AppleScript/JXA (hand-coded per app). Action Relay uses private framework APIs to generate workflows on the fly and run them directly — no setup, no per-app code.

Point it at Notes — you get 47 tools. UTM — 9 tools. Any app with App Intents works.

How it works

~600 lines of Swift across six files.

Discovery is the easy part. Every app that adopts App Intents ships a machine-readable JSON schema inside its bundle at a predictable path:

/Applications/SomeApp.app/Contents/Resources/Metadata.appintents/extract.actionsdata

This is the same metadata that powers Shortcuts.app’s action picker, Spotlight integration, and Siri. Action Relay parses this into MCP tool definitions automatically.

Execution is where it gets interesting. To actually run an intent from outside the app, Action Relay constructs a workflow plist in memory and sends it to BackgroundShortcutRunner, the XPC service embedded in WorkflowKit.framework. It’s the same service that Shortcuts.app and the shortcuts CLI use to run workflows.

Sending raw workflow data requires com.apple.shortcuts.background-running — an Apple-private entitlement that AMFI (Apple Mobile File Integrity) enforces. Non-Apple-signed binaries that claim it get killed. This means SIP and AMFI need to be disabled, which makes Action Relay a research and power-user tool rather than something you’d ship to end users. I would not recommend using it on a machine you care about.

Final thoughts

Apple’s native MCP support in App Intents will (hopefully) make this project unnecessary. The point was never to build a permanent solution. The project itself is proof-of-concept quality — check out the source if you want to poke around or build on it.

There are a few rough edges: entity resolution doesn’t work yet (actions on existing items prompt for selection instead of looking them up), “find”/search-type intents aren’t supported, and output format selection needs work.

Honestly, I think MCP tools are not the ideal way to integrate the App Intents system with agents. There are just too many tools and it’s hard to compose them. A scripting environment with access to the intents is where this gets powerful — using shortcut-generating libraries like Shortcuts-js or Cherri, similar to the idea behind Cloudflare’s Code Mode.

Basically, we need the AppleScript of Shortcuts/App Intents. A scripting environment also solves the ergonomics of dealing with entity resolution and the rich output types of intent actions much more elegantly. If I do work on this more, I’d be inclined to explore that direction instead.

Acknowledgements and References

RSS
https://tarq.net/posts/atom.xml