Skip to main content
Glama

Schedule a Workbench flow

workbench_flows_schedule

Set a specific built flow to run automatically on a cadence — the deterministic counterpart to a routine. Each run executes the flow's latest PUBLISHED revision with the fixed input envelope and routes the output per delivery. USE THIS when the user wants a flow they've built to run on a schedule ("run my digest flow every morning"). Do NOT create a routine for this — a routine runs a free-form instruction, not a built flow. The schedule runs the PUBLISHED flow, so the flow must be published (check workbench_flows_revisions_list; publish with workbench_flows_publish if it isn't). input is fixed for every run, so the flow itself should fetch anything time-varying at run time. Manage existing schedules with workbench_flows_schedules_list / workbench_flows_schedules_update.

Input Schema

NameRequiredDescriptionDefault
inputYesFixed input envelope every run executes with — {"kind":"chat","messages":[…]} or {"kind":"form","values":{…}}, the same shape workbench_flows_run takes. Constant across runs.
labelNo
flowIdYesFlow to schedule (id from workbench_flows_list).
deliveryNo
intervalNoPlain cadence: hourly, daily, or weekly. Omit when passing recurrence.
workspaceNoWorkspace slug. Personal tokens with no default workspace MUST pass this. Ignored for workspace API keys.
approvalIdNoApproval id from a prior needs_confirmation response. Omit on the first call.
recurrenceNoWhen it runs, like a calendar event repeats; use it for anything beyond a plain hourly/daily/weekly at one time (then omit interval). {"freq":"hourly"|"daily"|"weekly"|"monthly"|"yearly","every":N,"times":["HH:MM"],"weekdays":[0=Sun…6=Sat],"monthDays":[1…31,-1=last],"nthWeekdays":[{"nth":1…5|-1,"weekdays":[…]}],"months":[1…12],"minutes":[…],"hours":{"from","to"},"timezone":"<IANA>","starts","ends","skip":["YYYY-MM-DD"]}. Examples: weekdays at 8 → {"freq":"weekly","weekdays":[1,2,3,4,5],"times":["08:00"],"timezone":"America/Chicago"}; the last business day of the month → {"freq":"monthly","nthWeekdays":[{"nth":-1,"weekdays":[1,2,3,4,5]}],"timezone":"…"}; every other Friday → {"freq":"weekly","every":2,"weekdays":[5],"starts":"<a Friday>","timezone":"…"}. null clears it.
scheduleTimeNo
scheduleTimezoneNo
scheduleDayOfWeekNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / interval / description
      Previous value: -"Cadence: hourly, daily, or weekly."New value: +"Plain cadence: hourly, daily, or weekly. Omit when passing recurrence."
    • addedInput schema / properties / recurrence
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "ends": {
      +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +          "type": "string"
      +        },
      +        "every": {
      +          "default": 1,
      +          "maximum": 366,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "freq": {
      +          "enum": [
      +            "hourly",
      +            "daily",
      +            "weekly",
      +            "monthly",
      +            "yearly"
      +          ],
      +          "type": "string"
      +        },
      +        "hours": {
      +          "properties": {
      +            "from": {
      +              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      +              "type": "string"
      +            },
      +            "to": {
      +              "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "from",
      +            "to"
      +          ],
      +          "type": "object"
      +        },
      +        "minutes": {
      +          "items": {
      +            "maximum": 59,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "maxItems": 12,
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "monthDays": {
      +          "items": {
      +            "maximum": 31,
      +            "minimum": -1,
      +            "type": "integer"
      +          },
      +          "maxItems": 31,
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "months": {
      +          "items": {
      +            "maximum": 12,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "maxItems": 12,
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "nthWeekdays": {
      +          "items": {
      +            "properties": {
      +              "nth": {
      +                "maximum": 5,
      +                "minimum": -1,
      +                "type": "integer"
      +              },
      +              "weekdays": {
      +                "items": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "maxItems": 7,
      +                "minItems": 1,
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "nth",
      +              "weekdays"
      +            ],
      +            "type": "object"
      +          },
      +          "maxItems": 5,
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "skip": {
      +          "items": {
      +            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +            "type": "string"
      +          },
      +          "maxItems": 100,
      +          "type": "array"
      +        },
      +        "starts": {
      +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +          "type": "string"
      +        },
      +        "times": {
      +          "items": {
      +            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      +            "type": "string"
      +          },
      +          "maxItems": 24,
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "timezone": {
      +          "maxLength": 64,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "weekdays": {
      +          "items": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "maxItems": 7,
      +          "minItems": 1,
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "freq",
      +        "timezone"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "When it runs, like a calendar event repeats; use it for anything beyond a plain hourly/daily/weekly at one time (then omit interval). {\"freq\":\"hourly\"|\"daily\"|\"weekly\"|\"monthly\"|\"yearly\",\"every\":N,\"times\":[\"HH:MM\"],\"weekdays\":[0=Sun…6=Sat],\"monthDays\":[1…31,-1=last],\"nthWeekdays\":[{\"nth\":1…5|-1,\"weekdays\":[…]}],\"months\":[1…12],\"minutes\":[…],\"hours\":{\"from\",\"to\"},\"timezone\":\"<IANA>\",\"starts\",\"ends\",\"skip\":[\"YYYY-MM-DD\"]}. Examples: weekdays at 8 → {\"freq\":\"weekly\",\"weekdays\":[1,2,3,4,5],\"times\":[\"08:00\"],\"timezone\":\"America/Chicago\"}; the last business day of the month → {\"freq\":\"monthly\",\"nthWeekdays\":[{\"nth\":-1,\"weekdays\":[1,2,3,4,5]}],\"timezone\":\"…\"}; every other Friday → {\"freq\":\"weekly\",\"every\":2,\"weekdays\":[5],\"starts\":\"<a Friday>\",\"timezone\":\"…\"}. null clears it."
      +}
    • changedInput schema / required
      Previous value: -[
      -  "flowId",
      -  "interval",
      -  "input"
      -]New value: +[
      +  "flowId",
      +  "input"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / input / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "chat",
      -        "type": "string"
      -      },
      -      "messages": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "content": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "items": {},
      -                  "type": "array"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "role": {
      -              "type": "string"
      -            },
      -            "tool_call_id": {
      -              "type": "string"
      -            },
      -            "tool_calls": {
      -              "items": {
      -                "additionalProperties": {},
      -                "properties": {
      -                  "function": {
      -                    "additionalProperties": {},
      -                    "properties": {
      -                      "arguments": {},
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "id": {
      -                    "type": "string"
      -                  },
      -                  "type": {
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "required": [
      -            "role"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "messages"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "kind": {
      -        "const": "form",
      -        "type": "string"
      -      },
      -      "values": {
      -        "additionalProperties": {},
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "values"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "chat",
      +        "type": "string"
      +      },
      +      "messages": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "content": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "items": {},
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "role": {
      +              "type": "string"
      +            },
      +            "tool_call_id": {
      +              "type": "string"
      +            },
      +            "tool_calls": {
      +              "items": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "function": {
      +                    "additionalProperties": {},
      +                    "properties": {
      +                      "arguments": {},
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "type": {
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "role"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "values": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "messages"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "kind": {
      +        "const": "form",
      +        "type": "string"
      +      },
      +      "values": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "values"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description only needs to add context, which it does: it discloses the hard prerequisite that the flow must be published, that each run uses the latest published revision with a fixed input envelope, and that output is routed per `delivery`. It omits the needs_confirmation/approval flow implied by the approvalId parameter, which is left entirely to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then the when-to-use rule, then the prerequisite, then parameter guidance — a sensible order with no filler. It is dense and long, but nearly every clause carries operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no output schema, the description covers what an agent needs to call it correctly: the required published state, sibling routing, and the semantics of the two required params. Gaps remain around the two scheduling modes (interval vs recurrence), delivery routing choices, and the approval-id confirmation loop.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 55%, so the description must compensate, and it does for the important parameters: it explains that `input` is a fixed envelope matching workbench_flows_run's shape and that the flow should fetch time-varying data at run time, and that `delivery` routes output. It adds little for label, scheduleTime/scheduleTimezone/scheduleDayOfWeek, or the interval-vs-recurrence split beyond what the schema descriptions state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Set a specific built flow to run automatically on a cadence') plus scope qualifiers (deterministic counterpart to a routine, runs the latest PUBLISHED revision). It explicitly distinguishes itself from routines_create and from the sibling schedule management tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('USE THIS when the user wants a flow they've built to run on a schedule') with a concrete example, an explicit exclusion ('Do NOT create a routine for this'), and routes follow-up work to workbench_flows_schedules_list / _update and publish via workbench_flows_publish.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources