Save a workflow
workflow_saveValidates and persists a recorded browser workflow as a new version, clears the recording, and returns its name, version, and warnings to fix fragile selectors or literal passwords.
Instructions
Validates and saves a workflow as a new version, then clears the recording. Returns its name, version and warnings to fix (fragile selectors, literal passwords); invalid input returns path: message errors. workflow_get shows a saved example. Shape: {name,description,readOnly?,params?: {: {description?,required?,default?} or {secret:true,env:"ENV_VAR"}},items?: {from,key,scope?,sheet?,required?},servers?: {: {command,args?,env?,cwd?}|{url,headers?}|{ref:"claude"}|{ref:"agent"}},setup?: Step[],item?: Step[],teardown?: Step[]}. ref:agent uses an existing tool via host mode, without starting another server. Step: {id?,do,commit?,note?,timeoutMs?} plus: goto {url}|click/hover {target}|fill/select {target,value}|check {target,checked?}|press {key,target?}|upload {target,file}|download/extract {target,saveAs}|expect {target?,text?,value?,url?}|wait {target?,ms?}|http {url,method?,headers?,query?,body?:{json}|{form}|{text},expect?:{status?:[200],json?:{"/pointer":"expected template"}},save?:{name:"/pointer"},saveAs?,idempotencyKey?,session?:"none"|"browser"}|mcp {server,tool,args?,expect?:{json},save?,saveAs?,file?:"/pointer",readOnly?}. save feeds {{vars.name}}. click/press accept onDialog/dialogText. HTTP/MCP execute in Node; only steps needing a browser open one. Writes must be the one commit; later steps only verify/read. Credentials use secret params. Max 900000ms for wait/expect/download/http/mcp, 120000 otherwise. Target: {primary: Selector, fallbacks?: Selector[], frame?, description?}, as recorded. Selector: {by: "role", role, name?, exact?} | {by: "label" | "placeholder" | "text", text, exact?} | {by: "testid", id} | {by: "css", css} | {by: "xpath", xpath}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | The workflow JSON described above. |