> ## Documentation Index
> Fetch the complete documentation index at: https://www.plungeai.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# plungeai_workflow

> Manage your workflows: action create|get|update|delete|save_version|list_versions|get_version|restore_version|a2a_door (door_action mint|get|pause|resume|revoke — the workflow's Agent2Agent door).


Manage your workflows: action create|get|update|delete|save_version|list_versions|get_version|restore_version|a2a_door (door_action mint|get|pause|resume|revoke — the workflow's Agent2Agent door). kind workflow|agent|bot|campaign (a campaign create takes campaign_config and sets up its ledger and schedule). Bot control on a saved bot (workflow_id): permissions_get|permissions_set (classes, locks, budget_usd_run, budget_usd_month), files|file (path; ≤ 5 MB, base64)|inbox, bindings|bind|unbind (channel, sender_id); bot groups by name: groups|group_set (group, members)|group_delete|group_thread. Create/update/delete sync live to Studio, iMini, and peer apps.

Manage your saved workflows: `action` `create`, `get`, `update`, `delete`, `save_version`, `list_versions`, `get_version`, `restore_version` or `a2a_door`. Create, update and delete sync live to Studio, iMini and the other apps. `a2a_door` manages the workflow's Agent2Agent door (see [8.6](https://mcp.plungeai.com/docs#86-manage-saved-workflows--plungeai_workflow)). The bot actions work on a saved bot you own: `permissions_get` / `permissions_set` (class presets, admin locks, spend caps), `files` / `file` (its persistent workspace), `inbox`, `bindings` / `bind` / `unbind` (paired chats) and, by group name, `groups` / `group_set` / `group_delete` / `group_thread`.

**Returns.** `create`: ``Created workflow **<name>** (`<id>`). … Synced to all apps.``, with ``Filed under **<folder>**.`` or a ⚠️ note when the folder did not match (then it is created without a folder). `get`: the name, description and YAML, or `needs_input` when not found. `update`: ``Updated workflow `<id>`. Synced to all apps.`` with folder and kind notes; an unknown folder refuses the whole update. `delete`: ``Deleted workflow `<id>`. …``; a bot's memory namespace `<you>:bot:<id>` and scheduler jobs, or a campaign's jobs and ledger, are cleaned up after the row is gone (best effort; `update` with a `kind` that leaves `bot` or `campaign` does the same for the old kind). `save_version`: ``Saved version V<n> (`<version id>`).``. `list_versions`: a table of Version, ID, When, Note. `get_version`: that version's YAML. `restore_version`: `Restored — new version V<n>.`. `a2a_door` `mint`: ``A2A door **<url>** minted for **<name>**.`` with the token (shown once; minting again rotates it), the agent-card URL and a `curl` SendMessage recipe; `get`: the door's URL, status and kind, or `No A2A door for **<name>** yet.`; `pause`/`resume`: ``A2A door of **<name>** is now paused|active.``; `revoke`: ``A2A door of **<name>** revoked — …``. `permissions_get` / `permissions_set`: the classes, locks and caps as a list and a JSON block; `permissions_get` also lists `effective`, the preset each of the four classes runs under (the stored one, else `allow`). `files`: a table of path, size, type and update time; `file`: the file name, type and size and the bytes as a base64 block (a file over 5 MB is refused `file_too_large` with its One API download path). `inbox` and `group_thread`: a table of the queued messages. `bindings`: the chats bound to the bot, or a note when channel bindings are not enabled yet; `bind` / `unbind`: a confirmation. `groups`, `group_set`, `group_delete`: the groups and the change. Every bot refusal is ``Error: <message> (<code>)`` with the same codes as the One API (`workflow_not_found`, `lock_admin_required`, `invalid_params`, `file_not_found`, `not_paired`, `name_taken`, …). A workflow you do not own answers `Workflow not found.` on `update` / `delete` and the version actions (`get` returns a `needs_input` outcome), but ``Error: no saved workflow with that id for this account (workflow_not_found)`` on the bot actions above (and a group you do not own, addressed by name, answers `Group "<name>" not found.`). CNL validation and kind-lint warnings are appended; a validation or kind-lint error (for example `memory_owner` in the YAML) refuses the save (`Workflow YAML failed CNL validation: …`). A missing required field answers `Error: <field> is required for action "<action>"`.

```bash
curl -s https://mcp.plungeai.com/v1 \
  -H "Authorization: Bearer $PLUNGE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plungeai_workflow","arguments":{"user_request":"show me my Acquisition Scanner workflow","action":"get","workflow_id":"<workflow_id>"}}}'
```

<Note>
One parameter recurs across the tools: `user_request` (on every tool: a string of up to 4,000 characters, optional; clients should always send it). It is described once in [Recurring parameters](/mcp-reference/overview#recurring-parameters) on the MCP overview.
</Note>

## Input schema

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user_request": {
      "description": "The user's original request, verbatim and in their own words, before you translated it into this call. Always include it — the platform uses it for request context, routing and support diagnostics.",
      "type": "string",
      "maxLength": 4000
    },
    "action": {
      "type": "string",
      "enum": [
        "create",
        "get",
        "update",
        "delete",
        "list_versions",
        "get_version",
        "save_version",
        "restore_version",
        "a2a_door",
        "permissions_get",
        "permissions_set",
        "files",
        "file",
        "inbox",
        "bindings",
        "bind",
        "unbind",
        "groups",
        "group_set",
        "group_delete",
        "group_thread"
      ]
    },
    "workflow_id": {
      "type": "string",
      "maxLength": 256
    },
    "name": {
      "type": "string",
      "maxLength": 512
    },
    "yaml": {
      "type": "string",
      "maxLength": 262144
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "folder": {
      "type": "string",
      "maxLength": 2000
    },
    "kind": {
      "type": "string",
      "enum": [
        "workflow",
        "agent",
        "bot",
        "campaign",
        "campus",
        "building"
      ]
    },
    "campaign_config": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "maxLength": 64
      },
      "additionalProperties": {}
    },
    "version_id": {
      "type": "string",
      "maxLength": 256
    },
    "version_description": {
      "type": "string",
      "maxLength": 2000
    },
    "door_action": {
      "type": "string",
      "enum": [
        "mint",
        "get",
        "pause",
        "resume",
        "revoke"
      ]
    },
    "handle": {
      "type": "string",
      "maxLength": 64
    },
    "classes": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "maxLength": 16
      },
      "additionalProperties": {
        "type": "string",
        "maxLength": 16
      }
    },
    "locks": {
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 16
      }
    },
    "budget_usd_run": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0
        },
        {
          "type": "null"
        }
      ]
    },
    "budget_usd_month": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0
        },
        {
          "type": "null"
        }
      ]
    },
    "path": {
      "type": "string",
      "maxLength": 512
    },
    "channel": {
      "type": "string",
      "maxLength": 20
    },
    "sender_id": {
      "type": "string",
      "maxLength": 128
    },
    "group": {
      "type": "string",
      "maxLength": 40
    },
    "members": {
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 256
      }
    }
  },
  "required": [
    "action"
  ]
}
```
