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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
workflow_id | string | Yes | — | 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_stateand follow it. It states both switches — the workflow'sstatus(Active / Inactive) and its schedule (On / Paused / none) — and what that means will and won't run.scheduleis the read-back of its schedule (is_enabled, a plain-languagesummary), 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.