Docs
recipe MCP tool
Reusable playbooks.
MCP name recipe dispatches to renderer recipe.
Does not use hosted quota. Local editor operation.
Reusable playbooks. action search finds recipes by query. action get loads one recipeId. action create writes a private recipe. action update patches an existing private recipe. Editor must be open. Does not use hosted quota. Local editor operation.
Advertised MCP input
This tool is registered with passthrough. The fields below are what listTools advertises. The renderer still validates the child fields for the chosen action or kind. Extra advertised-only values are documented under Reachable behavior.
| Field | Type | Required | Constraints | Default | Description |
|---|---|---|---|---|---|
action | enum("search", "get", "create", "update") | yes | — | — | action for recipe |
resultStart | integer | no | min 0; max 9007199254740991 | 0 | First character offset to return. Use 0 for the first call. |
resultEnd | integer | no | min 1; max 9007199254740991 | 8000 | Exclusive end offset. resultEnd - resultStart must be at most 8000. Increment resultStart by 8000 to page through large results. |
Reachable behavior
Advertised action values match the renderer children: search, get, create, update.
Renderer child fields
These are the authoritative fields for each action. Send them on the same MCP call. Grouped MCP tools use passthrough, so these fields are not all listed in the advertised schema.
action=search
Renderer tool: searchRecipes.
Search semantic document playbooks that can raise output quality. Requires AI Search to be ready (embedding model + recipe index). In Agent Mode, try this before tackling substantive user tasks so existing recipes can guide the work. If unavailable because AI Search is still warming up, continue without recipes — do not retry until ready.
| Field | Type | Required | Constraints | Default | Description |
|---|---|---|---|---|---|
query | string | yes | minLength 1 | — | Natural language description of the needed reusable playbook. |
visibility | enum("all", "private", "public") | no | — | "all" | — |
limit | number | no | min 1; max 20 | 5 | — |
action=get
Renderer tool: getRecipe.
Retrieve one recipe playbook as structured context and record basic usage. Use before applying a recipe.
| Field | Type | Required | Constraints | Default | Description |
|---|---|---|---|---|---|
recipeId | string | yes | minLength 1 | — | Recipe ID returned by searchRecipes. |
visibility | enum("all", "private", "public") | no | — | "all" | — |
action=create
Renderer tool: createRecipe.
Create a private reusable recipe playbook. Requires AI Search to be ready (embedding model + recipe index). Before creating, searchRecipes should be used to avoid duplicates and updateRecipe should be used for a close match. If AI Search is still warming up, skip creating a recipe.
| Field | Type | Required | Constraints | Default | Description |
|---|---|---|---|---|---|
title | string | yes | minLength 1; maxLength 200 | — | — |
summary | string | yes | minLength 1; maxLength 2000 | — | — |
whenToUse | string | yes | minLength 1; maxLength 8000 | — | — |
steps | object[] | yes | minItems 1; maxItems 80 | — | — |
steps[].title | string | yes | minLength 1; maxLength 200 | — | — |
steps[].detail | string | yes | minLength 1; maxLength 8000 | — | — |
acceptanceCriteria | string[] | yes | minItems 1; maxItems 80 | — | — |
tags | string[] | no | maxItems 40 | [] | — |
document | string | yes | minLength 1; maxLength 80000 | — | — |
action=update
Renderer tool: updateRecipe.
Update an existing private recipe when a new reusable pattern overlaps it. Requires AI Search to be ready (embedding model + recipe index). Use after searchRecipes finds a close match. If AI Search is still warming up, skip updating recipes.
| Field | Type | Required | Constraints | Default | Description |
|---|---|---|---|---|---|
recipeId | string | yes | minLength 1 | — | — |
title | string | no | minLength 1; maxLength 200 | — | — |
summary | string | no | minLength 1; maxLength 2000 | — | — |
whenToUse | string | no | minLength 1; maxLength 8000 | — | — |
steps | object[] | no | minItems 1; maxItems 80 | — | — |
steps[].title | string | yes | minLength 1; maxLength 200 | — | — |
steps[].detail | string | yes | minLength 1; maxLength 8000 | — | — |
acceptanceCriteria | string[] | no | minItems 1; maxItems 80 | — | — |
tags | string[] | no | maxItems 40 | — | — |
document | string | no | minLength 1; maxLength 80000 | — | — |
Result window
Every local MCP tool accepts resultStart and resultEnd so large payloads can be paged.
resultStart— first character offset. Default0.resultEnd— exclusive end offset. Default8000.resultEnd - resultStartmust be at most 8000 characters.- Increment
resultStartby 8000 to read the next window.
