Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Loops MCP server

Vendor MCP
Open markdown

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 app
Your own Loops MCP server app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. 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>
  3. 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_name your code passes. See Configure connections.

  4. 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.

  5. 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.actions
    const connector = 'loopsmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { 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 call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'loopsmcp_get_loop_queue',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • loopsmcp_bulk_update_tasksBulk update the status or priority of multiple tasks at once.Write

    Bulk 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.Write

    Close 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.Write

    Create 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.Write

    Create 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.Write

    Create 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.Write

    Delete 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.Write

    Get 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.Write

    Get Loop Queue

    Get the priority-ordered loop queue for the workspace.

    Inputs

    This tool takes no inputs.