recipe_save
Skills / Recipes · macOS · Windows
Effect: write (strongest supported action). Status: gated.
Gated means the tool requires an installed app, a connected account, permission, or runtime availability. Check those requirements on the listed platform before using it.
macOS
Purpose
Saves a reusable SKILL — a named recipe (an ordered sequence of LMCP tool calls with parameters) — to this Mac so the user can re-run it anytime with recipe_run. A user would save one to turn a multi-step LMCP workflow they repeat (a morning brief, inbox triage, a weekly report, a data pull) into a single reusable command. Saved skills can be shared with other people via recipe_export. The manifest must have a name and a non-empty steps array. Returns {name}.
Required inputs
manifest— The recipe manifest. Shape: {"name": string (required), "description": string, "params": [{"name": string, "type": "string"|"int"|"bool", "default": any}], "steps": [ ... ] (required, non-empty), "outputs": [{"kind": string}]}. A step is EITHER a tool call {"tool": <tool_name>, "args": {...}} OR a pause {"wait": {"seconds": N}} (also {"wait": N}). Any arg string may interpolate a declared param with ${name} (e.g. "limit": "${count}"); an arg that is exactly "${name}" keeps the param's type. Steps run in order; a later step can consume an EARLIER step's output with "${steps[N].result.KEY}" (0-based; supports .key and [i], e.g. "account": "${steps[0].result.accounts[0].name}"). On recipe_run a state-changing step previews first unless confirm:true.
Permissions and confirmation
No explicit confirmation parameter is exposed in this snapshot. This does not grant permission to act: obtain user authorization before any real action.
- Use only the apps, accounts and resources authorized by the user on this platform. Consult this tool's platform-specific description for its connection and permission requirements; this catalog does not assert additional OAuth scopes or OS entitlements.
Full input schema — macOS
{
"properties": {
"manifest": {
"description": "The recipe manifest. Shape: {\"name\": string (required), \"description\": string, \"params\": [{\"name\": string, \"type\": \"string\"|\"int\"|\"bool\", \"default\": any}], \"steps\": [ ... ] (required, non-empty), \"outputs\": [{\"kind\": string}]}. A step is EITHER a tool call {\"tool\": <tool_name>, \"args\": {...}} OR a pause {\"wait\": {\"seconds\": N}} (also {\"wait\": N}). Any arg string may interpolate a declared param with ${name} (e.g. \"limit\": \"${count}\"); an arg that is exactly \"${name}\" keeps the param's type. Steps run in order; a later step can consume an EARLIER step's output with \"${steps[N].result.KEY}\" (0-based; supports .key and [i], e.g. \"account\": \"${steps[0].result.accounts[0].name}\"). On recipe_run a state-changing step previews first unless confirm:true.",
"type": "object"
}
},
"required": [
"manifest"
],
"type": "object"
}Documentation example
Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.
{
"manifest": {
"description": "Read the local date and time.",
"name": "Demo morning brief",
"steps": [
{
"args": {},
"tool": "get_datetime"
}
]
}
}Windows
Purpose
Saves a reusable SKILL — a named recipe (an ordered sequence of LMCP tool calls with parameters) — to this machine so the user can re-run it anytime with recipe_run. A user would save one to turn a multi-step LMCP workflow they repeat (a morning brief, inbox triage, a weekly report, a data pull) into a single reusable command. The manifest must have a name and a non-empty steps array. An arg string may interpolate a declared param with ${name}; an arg that is exactly "${name}" keeps the param's type. A later step can consume an earlier step's output with "${steps[N].result.KEY}" (0-based; supports .key and [i]). Returns {name, step_count}.
Required inputs
manifest— The recipe manifest. Shape: {"name": string (required), "description": string, "schema_version": int, "params": [{"name": string, "type": string, "default": any}], "steps": [{"tool": string, "args": object}] (required, non-empty)}.
Permissions and confirmation
No explicit confirmation parameter is exposed in this snapshot. This does not grant permission to act: obtain user authorization before any real action.
- Use only the apps, accounts and resources authorized by the user on this platform. Consult this tool's platform-specific description for its connection and permission requirements; this catalog does not assert additional OAuth scopes or OS entitlements.
Full input schema — Windows
{
"properties": {
"manifest": {
"description": "The recipe manifest. Shape: {\"name\": string (required), \"description\": string, \"schema_version\": int, \"params\": [{\"name\": string, \"type\": string, \"default\": any}], \"steps\": [{\"tool\": string, \"args\": object}] (required, non-empty)}.",
"type": "object"
}
},
"required": [
"manifest"
],
"type": "object"
}Documentation example
Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.
{
"manifest": {
"description": "Read the local date and time.",
"name": "Demo morning brief",
"steps": [
{
"args": {},
"tool": "get_datetime"
}
]
}
}