The Loops MCP connector routes your AI agent's tool calls to Loops's own MCP server through Scalekit. Each user signs in to Loops once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 20 tools.
- Tools
- 20
- What they doRead · write · destructive
- 0 · 20 · 00 read20 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Loops MCP server app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Loops MCP connection
In AgentKit > Connections, create a Loops MCP connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Loops MCP server connections use your own OAuth app. Register one with Loops MCP server and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Loops MCP connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'loopsmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Loops MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'loopsmcp_get_loop_queue',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "loopsmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Loops MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="loopsmcp_get_loop_queue",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolloopsmcp_bulk_update_tasksBulk update the status or priority of multiple tasks at once.WriteBulk Update Tasks
Bulk update the status or priority of multiple tasks at once.
Inputs
task_idsarrayrequired- Array of task IDs to update
loop_idstring- Loop ID to assign all tasks to (null to unassign)
prioritystring- New priority for all tasksone of
nonelowmediumhighurgent statusstring- New status for all tasksone of
openapprovedin_progresson_holdshippedrejected
loopsmcp_close_loopPut a loop on hold, pausing work without permanently closing it.WriteClose Loop
Put a loop on hold, pausing work without permanently closing it.
Inputs
loop_idstringrequired- The loop ID (ULID format)
loopsmcp_create_loopCreate a new loop to group related tasks into a development cycle.WriteCreate Loop
Create a new loop to group related tasks into a development cycle.
Inputs
namestringrequired- Loop name (e.g., "v2 Auth Refactor", "Payment Bug Fixes")
ai_contextstring- Agent instructions for this loop: scope, constraints, architecture decisions, specific requirements. This is shown to implementing agents alongside each task.
descriptionstring- Human-readable description of the loop
visibilitystring- Visibility: "public" (default) or "private"one of
publicprivate
loopsmcp_create_loop_from_tasksCreate a new loop and assign a set of existing tasks to it in one operation.WriteCreate Loop From Tasks
Create a new loop and assign a set of existing tasks to it in one operation.
Inputs
loop_namestringrequired- Name for the new loop
task_idsarrayrequired- Array of task IDs to assign to the new loop
loop_descriptionstring- Description for the new loop
loopsmcp_create_taskCreate a new task in the workspace with an optional title, body, priority, and loop assignment.WriteCreate Task
Create a new task in the workspace with an optional title, body, priority, and loop assignment.
Inputs
titlestringrequired- Task title — a concise summary of what needs to be done
bodystring- Agent prompt: detailed instructions for the AI agent that will implement this task. Include specific requirements, acceptance criteria, and any context needed.
loop_idstring- Optional loop ID to assign the task to immediately
prioritystring- Task priority (default: none)one of
nonelowmediumhighurgent
loopsmcp_delete_taskPermanently delete a task by its ID.WriteDelete Task
Permanently delete a task by its ID. This action cannot be undone.
Inputs
task_idstringrequired- The task ID (ULID format)
loopsmcp_get_loopGet a single loop with all its assigned tasks, comments, and AI context.WriteGet Loop
Get a single loop with all its assigned tasks, comments, and AI context.
Inputs
loop_idstringrequired- The loop ID (ULID format)
loopsmcp_get_loop_queueGet the priority-ordered loop queue for the workspace.WriteGet Loop Queue
Get the priority-ordered loop queue for the workspace.
Inputs
This tool takes no inputs.
loopsmcp_get_next_workGet the highest-priority loop with approved tasks ready for implementation.WriteGet Next Work
Get the highest-priority loop with approved tasks ready for implementation.
Inputs
This tool takes no inputs.
loopsmcp_get_queue_statsGet work queue statistics for the workspace, including counts of loops with work ready.WriteGet Queue Stats
Get work queue statistics for the workspace, including counts of loops with work ready.
Inputs
This tool takes no inputs.
loopsmcp_get_taskGet a single task with its full agent prompt (body) and all comments.WriteGet Task
Get a single task with its full agent prompt (body) and all comments.
Inputs
task_idstringrequired- The task ID (ULID format)
loopsmcp_get_workflowGet step-by-step instructions for a named Loops workflow (triage, organize, implement, or manage).WriteGet Workflow
Get step-by-step instructions for a named Loops workflow (triage, organize, implement, or manage).
Inputs
workflowstringrequired- Which workflow: triage, organize, implement, or manageone of
triageorganizeimplementmanage
loopsmcp_get_workspaceGet workspace details including the AI context (project-level agent instructions).WriteGet Workspace
Get workspace details including the AI context (project-level agent instructions).
Inputs
This tool takes no inputs.
loopsmcp_list_loopsList all loops in the workspace with task counts, statuses, and AI context.WriteList Loops
List all loops in the workspace with task counts, statuses, and AI context.
Inputs
This tool takes no inputs.
loopsmcp_list_tasksList unassigned tasks in the workspace, optionally filtered by status or priority.WriteList Tasks
List unassigned tasks in the workspace, optionally filtered by status or priority.
Inputs
prioritystring- Filter by priority: none, low, medium, high, urgent
statusstring- Filter by status: open (new), approved (ready for implementation), in_progress, shipped (done), rejected
loopsmcp_reopen_loopReopen an on-hold loop, returning it to the active queue.WriteReopen Loop
Reopen an on-hold loop, returning it to the active queue.
Inputs
loop_idstringrequired- The loop ID (ULID format)
loopsmcp_reorder_loopsBulk reorder loops in the work queue by passing an array of loop IDs in the desired priority order.WriteReorder Loops
Bulk reorder loops in the work queue by passing an array of loop IDs in the desired priority order.
Inputs
loop_idsarrayrequired- Array of loop IDs in priority order (first = highest priority)
loopsmcp_set_loop_prioritySet the numeric priority of a loop in the work queue (lower number = higher priority).WriteSet Loop Priority
Set the numeric priority of a loop in the work queue (lower number = higher priority).
Inputs
loop_idstringrequired- The loop ID (ULID format)
prioritynumberrequired- The priority value (0 = highest priority)
loopsmcp_ship_loopMark a loop as shipped and notify all members via email.WriteShip Loop
Mark a loop as shipped and notify all members via email.
Inputs
loop_idstringrequired- The loop ID (ULID format)
loopsmcp_update_taskUpdate a task's title, body, status, priority, due date, or loop assignment.WriteUpdate Task
Update a task's title, body, status, priority, due date, or loop assignment.
Inputs
task_idstringrequired- The task ID (ULID format)
bodystring- New agent prompt (implementation instructions)
due_datestring- Due date in YYYY-MM-DD format (null to clear)
loop_idstring- Loop ID to assign to (null to unassign from loop)
prioritystring- New priorityone of
nonelowmediumhighurgent statusstring- New status: approved (approve for implementation), rejected (decline), in_progress (being worked on), shipped (done), on_hold (paused)one of
openapprovedin_progresson_holdshippedrejected titlestring- New task title
No tools match.