Skip to main content
Glama

Workflows: create

workflows_create
Destructive

Creates a draft neonloops workflow that automates a task, in one of two ways:

  • without description: an empty draft whose only step is a Start (id start-1), to build with workflows_edit;

  • with description, the task in plain words: a ready draft with a Start on the trigger you give (on demand, a schedule or an app event), an Agent that does the task and an End. The answer gives its id and revision, plus, for a description, a builder link, apps to connect and next steps. Like every write here it is marked destructive, yet it only adds: nothing is published, run or changed. Each call makes a new draft; workflows_edit changes one. Without project_id it uses the one project it can build in, is refused with a list when there are several, and needs new_project_name when there are none.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "workflows_create"
  }
}

Input Schema

NameRequiredDescriptionDefault
appsNoWith description only. Slugs of the apps involved, e.g. ["gmail"] (connectors_search finds a slug). An unknown slug refuses the call. Narrows the trigger search and lists what still needs connecting.
nameNoThe workflow's name. Defaults to the description's first line, or "Untitled workflow" without one. A name already used in the project gets a number.
triggerNoWith description only. What starts it; omit it to run on demand ("manual"). {"when": "a new email arrives from a customer"} for an app event (the 'when …' part of the user's sentence; add "event", a trigger slug connectors_search returned for that sentence, to pick one of several), {"schedule": {"cron": "0 9 * * 1"}} for a time (5-field cron, in the workspace's timezone, UTC when it has none), or "manual".
project_idNoThe project to build in. Omit it when this connection reaches exactly one project; with several, the call is refused with their names and ids.
agent_toolsNoWith description only. App action slugs the Agent may call, e.g. ["GMAIL_SEND_EMAIL"], each checked against the real catalogue (connectors_search with an app's toolkit lists them). Omit for an Agent without tools.
descriptionNoThe task in the user's own words, the whole task and not only its trigger. Given, the draft is built as Start, Agent and End, and this becomes the Agent's instructions. Omitted, the draft has only a Start step.
new_project_nameNoFor a workspace with no project yet: a project with this name is created first, and the workflow is built in it. Refused when a project is already in reach. Not with project_id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / agent_tools
      Added value: +{
      +  "description": "With description only. App action slugs the Agent may call, e.g. [\"GMAIL_SEND_EMAIL\"], each checked against the real catalogue (connectors_search with an app's toolkit lists them). Omit for an Agent without tools.",
      +  "items": {
      +    "maxLength": 120,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 10,
      +  "type": "array"
      +}
    • addedInput schema / properties / apps
      Added value: +{
      +  "description": "With description only. Slugs of the apps involved, e.g. [\"gmail\"] (connectors_search finds a slug). An unknown slug refuses the call. Narrows the trigger search and lists what still needs connecting.",
      +  "items": {
      +    "maxLength": 80,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 5,
      +  "type": "array"
      +}
    • addedInput schema / properties / description
      Added value: +{
      +  "description": "The task in the user's own words, the whole task and not only its trigger. Given, the draft is built as Start, Agent and End, and this becomes the Agent's instructions. Omitted, the draft has only a Start step.",
      +  "maxLength": 4000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / name / description
      Previous value: -"Defaults to \"Untitled workflow\". A duplicate in the same project is auto-numbered."New value: +"The workflow's name. Defaults to the description's first line, or \"Untitled workflow\" without one. A name already used in the project gets a number."
    • addedInput schema / properties / new_project_name
      Added value: +{
      +  "description": "For a workspace with no project yet: a project with this name is created first, and the workflow is built in it. Refused when a project is already in reach. Not with project_id.",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / project_id / description
      Added value: +"The project to build in. Omit it when this connection reaches exactly one project; with several, the call is refused with their names and ids."
    • addedInput schema / properties / trigger
      Added value: +{
      +  "anyOf": [
      +    {
      +      "const": "manual",
      +      "type": "string"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "event": {
      +          "description": "A trigger slug connectors_search returned for that sentence, to pick one of several events.",
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "when": {
      +          "description": "The 'when …' part of the user's sentence, e.g. \"a new email arrives from a customer\".",
      +          "maxLength": 500,
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "when"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "schedule": {
      +          "additionalProperties": false,
      +          "description": "Runs it on a schedule.",
      +          "properties": {
      +            "cron": {
      +              "description": "A 5-field cron, e.g. \"0 9 * * 1\" for 9:00 every Monday, in the workspace's timezone (UTC when it has none).",
      +              "maxLength": 100,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "cron"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "schedule"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "With description only. What starts it; omit it to run on demand (\"manual\"). {\"when\": \"a new email arrives from a customer\"} for an app event (the 'when …' part of the user's sentence; add \"event\", a trigger slug connectors_search returned for that sentence, to pick one of several), {\"schedule\": {\"cron\": \"0 9 * * 1\"}} for a time (5-field cron, in the workspace's timezone, UTC when it has none), or \"manual\"."
      +}
    • removedInput schema / required
      Removed value: -[
      -  "project_id"
      -]
  2. Added

TDQS

A4.6/5.0
Behavior4/5

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

Directly addresses the destructiveHint=true annotation, explaining it is a blanket marker and that the call 'only adds: nothing is published, run or changed' — a valuable reconciliation of the scary annotation with real behavior. It also discloses that each call creates a new draft, that unknown app slugs/agent tool slugs refuse the call, and what the response contains (id, revision, builder link, apps to connect). It does not mention rate limits or partial-failure behavior, so it falls short of a 5.

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?

The bulleted two-mode structure is front-loaded and highly scannable, with each mode's outputs and constraints attached to it. The closing paragraph is dense (project_id fallbacks and refusal conditions run together) and slightly redundant with the same parameter descriptions, keeping it from a 5.

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

Completeness5/5

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

For a 7-parameter, zero-required, open-world creation tool with no output schema, the description covers both modes, defaults (name, manual trigger), response contents, refusal conditions, and pointers to the sibling tools needed to supply slugs. An agent has everything needed to choose a mode and call it correctly.

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 already 100%, so the baseline is 3; the description earns more by adding cross-parameter relationships the schema does not state — apps/trigger/agent_tools only apply with description, project_id interacts with new_project_name (mutually exclusive, and new_project_name is refused when a project is in reach), and each new draft is distinct.

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 and resource ('Creates a draft neonloops workflow') and then splits the behavior into two named modes: empty draft with only a Start step vs. a ready draft with Start, Agent and End. It explicitly contrasts with the sibling 'workflows_edit changes one', so an agent can distinguish create from edit without reading either schema.

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 explicit when-to-use branches (without vs. with description), names the alternative ('workflows_edit changes one'), and covers the project_id decision tree: omitted with one project, refused with several, requires new_project_name when none exist. It also points to connectors_search for app and trigger slugs.

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