Skip to main content
Glama

Run workflow

run_workflow
Destructive

Execute a workflow immediately with real side effects, returning its execution status to poll if still running.

Instructions

Run a workflow now — a real execution with real side effects, billed like any run (a flat per-execution fee plus model usage). Waits briefly and returns the execution: terminal if it finished, else status "running" to poll with get_workflow_execution. The workflow must already have steps.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
workflow_idYesThe workflow's UUID (from list_workflows or create_workflow).
trigger_payloadNoOptional sample input to hand the trigger (useful for a webhook workflow: run it with a sample body).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
errorNoArbitrary JSON owned by the producing engine.
faultYesWhy a non-succeeded execution ended. User means the workflow's own steps or limits. A platform fault is never billed. This field is null when the execution succeeded.
stepsNoArbitrary JSON owned by the producing engine.
billedYesThe billing flag. True only for a user-fault succeeded, failed, or timed-out execution.
statusYes
creditsYes
ended_atYes
created_atYes
started_atYes
step_statsNoArbitrary JSON owned by the producing engine.
duration_msYes
workflow_idYes
trigger_sourceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.16.0
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "billed": {
      +      "description": "The billing flag. True only for a user-fault succeeded, failed, or timed-out execution.",
      +      "type": "boolean"
      +    },
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "credits": {
      +      "type": [
      +        "null",
      +        "integer"
      +      ]
      +    },
      +    "duration_ms": {
      +      "type": [
      +        "null",
      +        "integer"
      +      ]
      +    },
      +    "ended_at": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "error": {
      +      "description": "Arbitrary JSON owned by the producing engine."
      +    },
      +    "fault": {
      +      "description": "Why a non-succeeded execution ended. User means the workflow's own steps or limits. A platform fault is never billed. This field is null when the execution succeeded.",
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "started_at": {
      +      "type": [
      +        "null",
      +        "string"
      +      ]
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "step_stats": {
      +      "description": "Arbitrary JSON owned by the producing engine."
      +    },
      +    "steps": {
      +      "description": "Arbitrary JSON owned by the producing engine."
      +    },
      +    "trigger_source": {
      +      "type": "string"
      +    },
      +    "workflow_id": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "workflow_id",
      +    "status",
      +    "fault",
      +    "billed",
      +    "trigger_source",
      +    "started_at",
      +    "ended_at",
      +    "duration_ms",
      +    "credits",
      +    "created_at"
      +  ],
      +  "type": "object"
      +}
  2. Addedv0.7.0
  3. Removedv0.3.0
  4. Addedv0.1.1

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructive/non-idempotent/open-world, and the description goes further: it discloses billing (flat per-execution fee plus model usage), that the call waits briefly, and that non-terminal results must be polled. This is meaningful cost and lifecycle context beyond the structured hints.

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

Conciseness5/5

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

Three tightly packed sentences, front-loaded with the core action and side-effect warning, then cost, then completion semantics. No filler.

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 mutating, billable, asynchronous execution tool, the description covers cost, side effects, prerequisites, and how to handle a non-terminal response. An output schema exists, so return-value detail is correctly left to it.

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

Parameters3/5

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

Schema description coverage is 100%, so both workflow_id and trigger_payload are already documented in the schema. The description adds no parameter-level syntax or format detail, which is acceptable given the schema carries that burden.

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 ('Run a workflow now') and immediately qualifies it as a real execution with real side effects, distinguishing it from scheduling, listing, or fetching executions among the siblings.

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

Usage Guidelines4/5

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

Gives the prerequisite ('the workflow must already have steps') and routes the agent to get_workflow_execution for polling when the run is not yet terminal. It does not explicitly contrast with schedule_run for deferred/recurring runs, so the when-not guidance is incomplete.

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