MCP Tools
Workflows

get_workflow

Fetch one workflow's full definition, triggers, latest run and run_state — whether the workflow is Active or Inactive and whether its schedule is On, Paused or absent. Always call it before update_workflow so you can preserve the fields you are not changing.

Parameters

NameTypeRequiredDefaultDescription
workflow_idstringYes—UUID of the workflow to fetch, as returned by `list_workflows` or `create_workflow`. The workflow must belong to the user's current team; a workflow owned by another team is refused. Fetch this before any `update_workflow` call so you can preserve the fields you are not changing.

Input Schema

{
  "type": "object",
  "required": [
    "workflow_id"
  ],
  "properties": {
    "workflow_id": {
      "type": "string",
      "description": "UUID of the workflow to fetch, as returned by `list_workflows` or `create_workflow`. The workflow must belong to the user's current team; a workflow owned by another team is refused. Fetch this before any `update_workflow` call so you can preserve the fields you are not changing."
    }
  }
}

Output Schema

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "workflow"
  ],
  "properties": {
    "workflow": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "name": {
          "type": "string"
        },
        "steps": {
          "type": "array"
        },
        "inputs": {
          "type": "object"
        },
        "status": {
          "type": "string"
        },
        "link_url": {
          "type": "string",
          "format": "uri",
          "description": "Direct URL to view this workflow in Marcora."
        },
        "schedule": {
          "type": "object",
          "description": "Present only when the workflow has a schedule. Read back from the saved schedule: trigger_id, is_enabled (true = On, false = Paused), summary (plain language, times in UTC), schedule_config."
        },
        "_triggers": {
          "type": "array"
        },
        "run_state": {
          "type": "string",
          "description": "What will and won't run, across both switches — the workflow's status (Active / Inactive) and its schedule (On / Paused / none) — with the words to use. Follow it when you describe the workflow to the user."
        },
        "_latest_run": {
          "type": [
            "object",
            "null"
          ],
          "description": "Most recent run, or null. When present, includes its own link_url."
        },
        "allowed_tools": {
          "type": "array"
        }
      }
    }
  }
}

Instructions

Fetch one workflow's full definition plus triggers and latest run. Always use this before update_workflow to see the current field values — partial updates clobber unspecified keys.

Input roles:

  • workflow_id: UUID string of the workflow to fetch.

Usage patterns:

  • Before update_workflow: call get_workflow, read the current steps / allowed_tools / inputs, then construct your update payload with those existing values preserved for any field you aren't changing.
  • To say whether it runs, and how: read run_state and follow it. It states both switches — the workflow's status (Active / Inactive) and its schedule (On / Paused / none) — and what that means will and won't run. schedule is the read-back of its schedule (is_enabled, a plain-language summary), present only when it has one.
  • Two switches, two vocabularies: the workflow is Active or Inactive; the schedule is On or Paused. Never mix them, and never call a workflow Active without saying whether its schedule is On, Paused or absent — it runs on its own only when it is Active AND its schedule is On.
  • To show last run outcome: inspect _latest_run.status + _latest_run.completed_at.

Links: present link_url to the user exactly as returned — copy it character for character. Never retype, shorten, or rebuild a link or the IDs inside it.

Scroll to Top