1
Describe a tool
A name, a one-line description (so the model knows when to use it), its arguments, and an action.
2
Drop it in
Save it to your plugins folder, or click Install in app on any plugin.
3
Just say it
The assistant can now call your tool by voice — exposed as plugin_<name>.
Where plugins live
~/Library/Application Support/CursorVoice/plugins/
Every .json in that folder becomes a tool. The Install in app button drops it there for you.
Manifest format
{
"name": "search wikipedia",
"description": "Open a Wikipedia search for a topic in the browser.",
"parameters": {
"type": "object",
"properties": { "topic": { "type": "string" } },
"required": ["topic"]
},
"run": {
"type": "open_url",
"template": "https://en.wikipedia.org/w/index.php?search={{topic}}"
}
}
Then say “search Wikipedia for the Eiffel Tower.” Run types:
open_url
Opens a URL. Arguments are URL-encoded.
shell
Runs a zsh command. Args are shell-quoted; the destructive-command guard and Dry-run still apply.
applescript
Runs AppleScript. Args are escaped.