Skip to main content
Glama

Run workflow

run_workflow
Destructive

Trigger a workflow immediately to execute its steps, then get the terminal result or a running status to poll for completion.

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?

The description adds valuable context beyond the annotations: it discloses billing ('billed like any run...'), the wait-and-return behavior, and the terminal vs 'running' status distinction. It does not contradict the annotations (destructiveHint=true, readOnlyHint=false), and the added details meaningfully inform an agent of side effects and polling needs.

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?

The description is two dense sentences that front-load purpose and billing, then explain behavior and precondition. Every sentence earns its place; there is no fluff or repetition.

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?

The description covers purpose, side effects, billing, wait behavior, polling alternative, and a precondition. With an output schema present and full schema coverage, nothing essential is missing for an agent to invoke it correctly.

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 parameters (workflow_id and trigger_payload) are fully documented in the schema. The description does not add new parameter-level detail, but it does set a precondition ('must already have steps') that is a prerequisite rather than a parameter attribute. Baseline of 3 is appropriate.

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?

The description clearly states a specific action ('Run a workflow now') and distinguishes it from a mere preview by emphasizing 'real execution with real side effects.' It also differentiates from polling via get_workflow_execution, making the tool's unique purpose unambiguous.

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?

The description explicitly says to poll with get_workflow_execution if the execution is still running, and it states the prerequisite that the workflow must already have steps. However, it does not contrast with schedule_run or other run-related alternatives, 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.