OAUTH 2.1
TASK MANAGEMENT
Tasks, docs, and sprint state for the whole org sit inside ClickUp spaces. ClickUp MCP gives your agent authenticated access scoped to the user who authorized it.
For more tools, view docs.
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
// ClickUp MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["clickupmcp"], toolNames: [
"clickupmcp_clickup_add_tag_to_task",
"clickupmcp_clickup_add_task_dependency",
"clickupmcp_clickup_add_task_link"
] },
pageSize: 100,
});
const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "What is assigned to me in the platform space this sprint?" }] });import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
// ClickUp MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["clickupmcp"], toolNames: [
"clickupmcp_clickup_add_tag_to_task",
"clickupmcp_clickup_add_task_dependency",
"clickupmcp_clickup_add_task_link"
] },
pageSize: 100,
});
const openai = new OpenAI();
const res = await openai.responses.create({
model: "gpt-5",
tools: tools.map((t) => t.openai),
input: "What is assigned to me in the platform space this sprint?",
});import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
// ClickUp MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["clickupmcp"], toolNames: [
"clickupmcp_clickup_add_tag_to_task",
"clickupmcp_clickup_add_task_dependency",
"clickupmcp_clickup_add_task_link"
] },
pageSize: 100,
});
const anthropic = new Anthropic();
const msg = await anthropic.messages.create({
model: "claude-opus-4-6",
max_tokens: 1024,
tools: tools.map((t) => t.anthropic),
messages: [{ role: "user", content: "What is assigned to me in the platform space this sprint?" }],
});import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
// ClickUp MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["clickupmcp"], toolNames: [
"clickupmcp_clickup_add_tag_to_task",
"clickupmcp_clickup_add_task_dependency",
"clickupmcp_clickup_add_task_link"
] },
pageSize: 100,
});
const agent = new Agent({
name: "clickupmcp_agent",
model: "gemini-2.5-pro",
instruction: "Act as the project management agent for the signed-in user.",
tools,
});
await agent.run("What is assigned to me in the platform space this sprint?");// shared token
audit → bot_service_account
user_filter → broken
// scalekit
audit → user_abc
scope → enforced ✓