Automation tools
Blueprints — read, author, validate, and compile visual Blueprints into tested workflows.
5 tools. Each is callable over MCP with a Bearer agx_ key that holds the required scope. The catalog is public (tools/list isn't scope-filtered); the scope below is enforced when the tool is called (tools/call) — a key without it is refused (default-deny).
get_blueprint
Read a workflow's BLUEPRINT — the simple visual design (8 block types: trigger/step/decision/send/wait/ai/data/end) stored on the workflow. Returns {blocks, edges, has_blueprint, block_types}. A blueprint is the business-facing intent a workflow was built from; use it to understand or rebuild the workflow. Requires blueprints:read.
Required scope: blueprints:read
Input
| Parameter | Type | Required | Description |
|---|---|---|---|
workflow_id | string | ✓ | The workflow that owns the blueprint. |
Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_blueprint",
"arguments": {
"workflow_id": "\u2026"
}
}
}
delete_blueprint
Clear a workflow's blueprint (sets it to empty). Does NOT touch the real workflow graph/nodes. Requires blueprints:write.
Required scope: blueprints:write
Input
| Parameter | Type | Required | Description |
|---|---|---|---|
workflow_id | string | ✓ |
Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_blueprint",
"arguments": {
"workflow_id": "\u2026"
}
}
}
list_blueprints
List the org's workflows that HAVE a blueprint (id, name, block/edge counts, block-type breakdown), newest first. Requires blueprints:read.
Required scope: blueprints:read
Input
No input parameters.
Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_blueprints",
"arguments": {}
}
}
set_blueprint
Create or replace a workflow's blueprint. Provide workflow_id and a blueprint = {blocks[], edges[]}. Each block: {id, type (one of trigger/step/decision/send/wait/ai/data/end), position?, data?{title, description, config}}. Each edge: {id?, source, target, label?} (decision branches use label 'Yes'/'No'). Shape-validated; upserts in place — it does NOT change the real workflow graph. Requires blueprints:write.
Required scope: blueprints:write
Input
| Parameter | Type | Required | Description |
|---|---|---|---|
workflow_id | string | ✓ | |
blueprint | object | ✓ | A blueprint = {blocks[], edges[]}. |
Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_blueprint",
"arguments": {
"workflow_id": "\u2026",
"blueprint": {}
}
}
}
validate_blueprint
Structurally lint a blueprint and return {valid, errors[], warnings[]}. Pass workflow_id to validate the stored one, OR an inline blueprint ({blocks, edges}). BLOCKS on: no blocks, no/multiple trigger, unknown block type, duplicate id, edge to a missing block. WARNS on: a decision without both branches, unreachable blocks, no end block. Run this before generating a workflow from a blueprint. Requires blueprints:read.
Required scope: blueprints:read
Input
| Parameter | Type | Required | Description |
|---|---|---|---|
workflow_id | string | Validate this workflow's stored blueprint. | |
blueprint | object | A blueprint = {blocks[], edges[]}. |
Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "validate_blueprint",
"arguments": {}
}
}