AutomationFlowsAI & RAG › ClickUp AI Agent Controller with Supabase

ClickUp AI Agent Controller with Supabase

Original n8n title: Clickup AI Agent - Ultimate Controller

ClickUp AI Agent - Ultimate Controller. Uses supabase, httpRequest. Webhook trigger; 18 nodes.

Webhook trigger★★★★☆ complexity18 nodesSupabaseHTTP Request
AI & RAG Trigger: Webhook Nodes: 18 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → Supabase recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "ClickUp AI Agent - Ultimate Controller",
  "nodes": [
    {
      "parameters": {
        "path": "clickup-agent-v2",
        "options": {}
      },
      "id": "webhook-trigger",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "user_id",
              "value": "={{ $json.body.user_id || $json.body.client_id || 'system' }}"
            },
            {
              "name": "agent_mode",
              "value": "={{ $json.body.agent_mode || 'task_manager' }}"
            },
            {
              "name": "operation",
              "value": "={{ $json.body.operation || 'create' }}"
            },
            {
              "name": "client_id",
              "value": "={{ $json.body.client_id || 'vinyl_internal' }}"
            },
            {
              "name": "project_id",
              "value": "={{ $json.body.project_id || null }}"
            }
          ],
          "object": [
            {
              "name": "payload",
              "value": "={{ $json.body.payload || {} }}"
            },
            {
              "name": "full_request",
              "value": "={{ $json.body }}"
            }
          ]
        },
        "options": {}
      },
      "id": "parse-agent-request",
      "name": "Parse Agent Request",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        460,
        300
      ]
    },
    {
      "parameters": {
        "resource": "rows",
        "operation": "get",
        "tableId": "user_profiles",
        "filterType": "manual",
        "matchType": "allFilters",
        "filters": {
          "conditions": [
            {
              "keyName": "user_id",
              "condition": "equals",
              "keyValue": "={{ $json.user_id }}"
            }
          ]
        },
        "options": {}
      },
      "id": "lookup-user-context",
      "name": "Lookup User Context",
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        680,
        300
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "rows",
        "operation": "get",
        "tableId": "user_configs",
        "filterType": "manual",
        "matchType": "allFilters",
        "filters": {
          "conditions": [
            {
              "keyName": "user_id",
              "condition": "equals",
              "keyValue": "={{ $('Parse Agent Request').item.json.user_id }}"
            }
          ]
        },
        "options": {}
      },
      "id": "get-user-config",
      "name": "Get User Config",
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        900,
        300
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "user_id",
              "value": "={{ $('Parse Agent Request').item.json.user_id }}"
            },
            {
              "name": "agent_mode",
              "value": "={{ $('Parse Agent Request').item.json.agent_mode }}"
            },
            {
              "name": "operation",
              "value": "={{ $('Parse Agent Request').item.json.operation }}"
            },
            {
              "name": "client_id",
              "value": "={{ $('Parse Agent Request').item.json.client_id }}"
            },
            {
              "name": "project_id",
              "value": "={{ $('Parse Agent Request').item.json.project_id }}"
            },
            {
              "name": "preferred_ai_model",
              "value": "={{ $json.preferred_ai_model || 'claude-3-sonnet' }}"
            },
            {
              "name": "timezone",
              "value": "={{ $json.timezone || 'America/New_York' }}"
            },
            {
              "name": "default_list_id",
              "value": "={{ $json.integration_settings?.default_list_id || '901317115211' }}"
            },
            {
              "name": "github_username",
              "value": "={{ $json.integration_settings?.github_username || '' }}"
            },
            {
              "name": "slack_channel_id",
              "value": "={{ $json.slack_channel_id || '' }}"
            }
          ],
          "object": [
            {
              "name": "payload",
              "value": "={{ $('Parse Agent Request').item.json.payload }}"
            },
            {
              "name": "user_profile",
              "value": "={{ $('Lookup User Context').item.json }}"
            },
            {
              "name": "notification_preferences",
              "value": "={{ $json.notification_preferences || {} }}"
            }
          ]
        },
        "options": {}
      },
      "id": "enrich-context",
      "name": "Enrich Context",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        1120,
        300
      ]
    },
    {
      "parameters": {
        "dataType": "string",
        "value1": "={{ $json.agent_mode }}",
        "rules": {
          "rules": [
            {
              "value2": "task_manager",
              "output": 0
            },
            {
              "value2": "comment_processor",
              "output": 1
            },
            {
              "value2": "status_updater",
              "output": 2
            },
            {
              "value2": "report_generator",
              "output": 3
            },
            {
              "value2": "automation_handler",
              "output": 4
            }
          ]
        },
        "fallbackOutput": 5
      },
      "id": "agent-router",
      "name": "Agent Router",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 1,
      "position": [
        1340,
        300
      ]
    },
    {
      "parameters": {
        "resource": "rows",
        "operation": "get",
        "tableId": "knowledge_assets",
        "filterType": "manual",
        "matchType": "anyFilter",
        "filters": {
          "conditions": [
            {
              "keyName": "client_id",
              "condition": "equals",
              "keyValue": "={{ $json.client_id }}"
            },
            {
              "keyName": "project_id",
              "condition": "equals",
              "keyValue": "={{ $json.project_id }}"
            }
          ]
        },
        "options": {
          "limit": 10
        }
      },
      "id": "get-knowledge-context",
      "name": "Get Knowledge Context",
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        1560,
        200
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "rows",
        "operation": "get",
        "tableId": "agency_training",
        "filterType": "manual",
        "matchType": "allFilters",
        "filters": {
          "conditions": [
            {
              "keyName": "active",
              "condition": "equals",
              "keyValue": "true"
            }
          ]
        },
        "options": {
          "limit": 5
        }
      },
      "id": "get-agency-training",
      "name": "Get Agency Training",
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        1560,
        300
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://api.anthropic.com/v1/messages",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "anthropicApi",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "anthropic-version",
              "value": "2023-06-01"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "={{ $json.preferred_ai_model || 'claude-3-sonnet-20240229' }}"
            },
            {
              "name": "max_tokens",
              "value": "2048"
            },
            {
              "name": "messages",
              "value": "=[{\"role\": \"system\", \"content\": \"You are Vader, Andrew's AI systems strategist and ClickUp task manager. You analyze high-level instructions and break them into modular, systemized tasks. Use the provided agency training and client context to create intelligent, actionable tasks.\"}, {\"role\": \"user\", \"content\": \"User: \" + $json.user_profile.full_name + \" (\" + $json.user_profile.role + \")\\nOperation: \" + $json.operation + \"\\nClient: \" + $json.client_id + \"\\nProject: \" + ($json.project_id || 'General') + \"\\n\\nRequest: \" + JSON.stringify($json.payload) + \"\\n\\nAgency Training Context: \" + JSON.stringify($('Get Agency Training').all()) + \"\\n\\nProject Knowledge: \" + JSON.stringify($('Get Knowledge Context').all()) + \"\\n\\nPlease create structured ClickUp task data with appropriate priority, assignees, and detailed descriptions that incorporate our agency best practices and client context.\"}]"
            }
          ]
        },
        "options": {}
      },
      "id": "task-manager-ai",
      "name": "Task Manager AI (Vader)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1780,
        200
      ],
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://api.openai.com/v1/chat/completions",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "openAiApi",
        "sendHeaders": true,
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "gpt-4o-mini"
            },
            {
              "name": "max_tokens",
              "value": "2048"
            },
            {
              "name": "messages",
              "value": "=[{\"role\": \"system\", \"content\": \"You are Vader, Andrew's AI systems strategist and ClickUp task manager. You analyze high-level instructions and break them into modular, systemized tasks. Use the provided agency training and client context to create intelligent, actionable tasks.\"}, {\"role\": \"user\", \"content\": \"User: \" + $('Enrich Context').item.json.user_profile.full_name + \" (\" + $('Enrich Context').item.json.user_profile.role + \")\\nOperation: \" + $('Enrich Context').item.json.operation + \"\\nClient: \" + $('Enrich Context').item.json.client_id + \"\\nProject: \" + ($('Enrich Context').item.json.project_id || 'General') + \"\\n\\nRequest: \" + JSON.stringify($('Enrich Context').item.json.payload) + \"\\n\\nAgency Training Context: \" + JSON.stringify($('Get Agency Training').all()) + \"\\n\\nProject Knowledge: \" + JSON.stringify($('Get Knowledge Context').all()) + \"\\n\\nPlease create structured ClickUp task data with appropriate priority, assignees, and detailed descriptions that incorporate our agency best practices and client context.\"}]"
            }
          ]
        },
        "options": {}
      },
      "id": "task-manager-ai-openai",
      "name": "Task Manager AI (GPT-4o-mini)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1780,
        400
      ],
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "dataType": "string",
        "value1": "={{ $('Enrich Context').item.json.preferred_ai_model }}",
        "rules": {
          "rules": [
            {
              "value2": "gpt-4o-mini",
              "output": 0
            },
            {
              "value2": "gpt-4",
              "output": 0
            },
            {
              "value2": "gpt-3.5-turbo",
              "output": 0
            }
          ]
        },
        "fallbackOutput": 1
      },
      "id": "ai-model-router",
      "name": "AI Model Router",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 1,
      "position": [
        1560,
        400
      ]
    },
    {
      "parameters": {
        "url": "https://api.anthropic.com/v1/messages",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "anthropicApi",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "anthropic-version",
              "value": "2023-06-01"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "={{ $('Enrich Context').item.json.preferred_ai_model || 'claude-3-sonnet-20240229' }}"
            },
            {
              "name": "max_tokens",
              "value": "1024"
            },
            {
              "name": "messages",
              "value": "=[{\"role\": \"system\", \"content\": \"You are a ClickUp comment processor AI with access to client context and agency best practices. Analyze comments intelligently and provide actionable responses.\"}, {\"role\": \"user\", \"content\": \"User: \" + $('Enrich Context').item.json.user_profile.full_name + \"\\nClient: \" + $('Enrich Context').item.json.client_id + \"\\nComment Analysis Request: \" + JSON.stringify($('Enrich Context').item.json.payload) + \"\\n\\nPlease analyze this comment and provide intelligent insights or suggested actions.\"}]"
            }
          ]
        },
        "options": {}
      },
      "id": "comment-processor-ai",
      "name": "Comment Processor AI",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        900,
        300
      ],
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://api.clickup.com/api/v2/task/{{ $json.payload.task_id }}/status",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "clickUpApi",
        "sendHeaders": true,
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "status",
              "value": "={{ $json.payload.status_to }}"
            }
          ]
        },
        "options": {}
      },
      "id": "status-updater",
      "name": "Status Updater",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        900,
        400
      ],
      "credentials": {
        "clickUpApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://api.anthropic.com/v1/messages",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "anthropicApi",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "anthropic-version",
              "value": "2023-06-01"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "claude-3-sonnet-20240229"
            },
            {
              "name": "max_tokens",
              "value": "2048"
            },
            {
              "name": "messages",
              "value": "=[{\"role\": \"user\", \"content\": \"You are a ClickUp report generator AI. Generate a comprehensive report based on: \" + JSON.stringify($json.payload) + \". Context: \" + $json.project_context}]"
            }
          ]
        },
        "options": {}
      },
      "id": "report-generator",
      "name": "Report Generator",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        900,
        500
      ],
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://api.anthropic.com/v1/messages",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "anthropicApi",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "anthropic-version",
              "value": "2023-06-01"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "model",
              "value": "claude-3-sonnet-20240229"
            },
            {
              "name": "max_tokens",
              "value": "1024"
            },
            {
              "name": "messages",
              "value": "=[{\"role\": \"user\", \"content\": \"You are a ClickUp automation handler AI. Process this automation request: \" + JSON.stringify($json.payload) + \". Context: \" + $json.project_context + \". Operation: \" + $json.operation}]"
            }
          ]
        },
        "options": {}
      },
      "id": "automation-handler",
      "name": "Automation Handler",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        900,
        600
      ],
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "status",
              "value": "success"
            },
            {
              "name": "agent_mode",
              "value": "={{ $('Parse Agent Request').item.json.agent_mode }}"
            },
            {
              "name": "operation",
              "value": "={{ $('Parse Agent Request').item.json.operation }}"
            },
            {
              "name": "client_id",
              "value": "={{ $('Parse Agent Request').item.json.client_id }}"
            },
            {
              "name": "message",
              "value": "ClickUp AI Agent request processed successfully"
            }
          ],
          "object": [
            {
              "name": "result",
              "value": "={{ $json }}"
            },
            {
              "name": "timestamp",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        },
        "options": {}
      },
      "id": "final-response",
      "name": "Final Response",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        1120,
        400
      ]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "status",
              "value": "error"
            },
            {
              "name": "agent_mode",
              "value": "={{ $('Parse Agent Request').item.json.agent_mode || 'unknown' }}"
            },
            {
              "name": "message",
              "value": "Unknown agent mode or processing error"
            }
          ],
          "object": [
            {
              "name": "error_details",
              "value": "={{ $json }}"
            },
            {
              "name": "timestamp",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        },
        "options": {}
      },
      "id": "error-handler",
      "name": "Error Handler",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        900,
        700
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ $json }}"
      },
      "id": "webhook-response",
      "name": "Webhook Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1340,
        400
      ]
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Parse Agent Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Agent Request": {
      "main": [
        [
          {
            "node": "Lookup User Context",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lookup User Context": {
      "main": [
        [
          {
            "node": "Get User Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get User Config": {
      "main": [
        [
          {
            "node": "Enrich Context",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enrich Context": {
      "main": [
        [
          {
            "node": "Agent Router",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Agent Router": {
      "main": [
        [
          {
            "node": "Get Knowledge Context",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Comment Processor AI",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Status Updater",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Report Generator",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Automation Handler",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error Handler",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Knowledge Context": {
      "main": [
        [
          {
            "node": "Get Agency Training",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Agency Training": {
      "main": [
        [
          {
            "node": "AI Model Router",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Model Router": {
      "main": [
        [
          {
            "node": "Task Manager AI (GPT-4o-mini)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Task Manager AI (Vader)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Task Manager AI (GPT-4o-mini)": {
      "main": [
        [
          {
            "node": "Final Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Task Manager AI (Vader)": {
      "main": [
        [
          {
            "node": "Final Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Comment Processor AI": {
      "main": [
        [
          {
            "node": "Final Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Status Updater": {
      "main": [
        [
          {
            "node": "Final Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Report Generator": {
      "main": [
        [
          {
            "node": "Final Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Automation Handler": {
      "main": [
        [
          {
            "node": "Final Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Error Handler": {
      "main": [
        [
          {
            "node": "Final Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Final Response": {
      "main": [
        [
          {
            "node": "Webhook Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "timezone": "America/New_York",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner"
  },
  "versionId": "1",
  "id": "clickup-agent-ultimate",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "tags": [
    {
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-01T00:00:00.000Z",
      "id": "clickup-ai-agent",
      "name": "ClickUp AI Agent"
    }
  ]
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

ClickUp AI Agent - Ultimate Controller. Uses supabase, httpRequest. Webhook trigger; 18 nodes.

Source: https://github.com/Andrew-Vinyl/ai-workflow-forge/blob/3c807fee8788dbd6ce746fa626369c041394271b/flows/clickup-agent-ultimate.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

⏺ 🚀 How it works

Agent, Anthropic Chat, Output Parser Structured +6
AI & RAG

L&D_AgentsAI_ATIVO. Uses httpRequest, agent, googleCalendarTool, toolSerpApi. Webhook trigger; 93 nodes.

HTTP Request, Agent, Google Calendar Tool +9
AI & RAG

Flux. Uses lmChatOpenAi, agent, googleGemini, httpRequest. Webhook trigger; 67 nodes.

OpenAI Chat, Agent, Google Gemini +8
AI & RAG

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13
AI & RAG

Agent: IPTV (instance_e2165d22_1762376395079). Uses openAi, redis, supabase, httpRequest. Webhook trigger; 56 nodes.

OpenAI, Redis, Supabase +7