create_workflow
Create a new workflow template. Workflows start as status="draft"; activate them via update_workflow once the user confirms.
Input Schema
{
"type": "object",
"required": [
"name",
"steps"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Human-readable workflow name."
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description"
],
"properties": {
"name": {
"type": "string"
},
"agent_hint": {
"type": "string"
},
"description": {
"type": "string"
}
},
"additionalProperties": true
},
"minItems": 1,
"description": "Ordered step objects. The runner executes these sequentially."
},
"inputs": {
"type": "object",
"description": "Declared input schema. Keys are input names; values describe type/label/required (free-form).",
"additionalProperties": true
},
"description": {
"type": "string",
"description": "One- or two-sentence description of what this workflow accomplishes."
},
"allowed_tools": {
"type": "array",
"items": {
"type": "string"
},
"description": "Narrow allowlist of MCP tool names the runner may call."
},
"schedule_config": {
"type": "object",
"description": "Optional. Creates an accompanying workflow_trigger with is_enabled=false. Shape: frequency (daily/weekly/hourly), interval_hours, timezone (UTC).",
"additionalProperties": true
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"required": [
"id",
"name",
"status",
"link_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Workflow UUID. Use as workflow_id in other workflow tools."
},
"name": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array"
},
"inputs": {
"type": "object"
},
"status": {
"enum": [
"draft"
],
"type": "string"
},
"team_id": {
"type": "string",
"format": "uuid"
},
"link_url": {
"type": "string",
"format": "uri"
},
"created_at": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"description": {
"type": "string"
},
"allowed_tools": {
"type": "array"
},
"created_by_user_id": {
"type": "string"
}
}
}Instructions
Create a new workflow template for your active team. Workflows start as draft — activate them with update_workflow once the user confirms. Check list_workflows with a search filter for duplicate names first.
Scheduling note: include schedule_config ONLY if the user explicitly wants the workflow scheduled. Otherwise omit it and the workflow runs on demand via run_workflow.
Parameters:
- name (string, required): Human-readable workflow name. Confirm with the user before creating
- description (string, optional): One or two sentences; becomes part of the runner's system prompt
- steps (array, required): Ordered list of steps. Each should be specific enough that a fresh agent can execute it without follow-up questions
- inputs (object, optional): Declares what the workflow needs (e.g. topic, date_range); resolved from trigger bindings on scheduled runs
- allowed_tools (array, optional): Tool allowlist for the runner. Prefer tight allowlists, especially for scheduled runs
- tags (string[], optional): Optional tags
- schedule_config (object, optional): Scheduling config. Shape: { "frequency": "daily"|"weekly"|"hourly", "interval_hours": N, "timezone": "UTC" }. Omit unless scheduling is requested
Output: The created workflow object — id, team_id, created_by_user_id, name, description, status (draft), inputs, steps, allowed_tools, tags, created_at, updated_at, link_url. Use id as workflow_id in the other workflow tools.