Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Plain MCP server

Vendor MCP
Open markdown

The Plain MCP connector routes your AI agent's tool calls to Plain's own MCP server through Scalekit. Each user signs in to Plain once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 86 tools.

Tools
86
What they doRead · write · destructive
27 · 21 · 3827 read21 write38 destructive
Users sign in with
OAuth app
Scalekit's or your own

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 Plain MCP connection

    In AgentKit > Connections, create a Plain MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Plain MCP server, so you don't need to register an OAuth app.

  4. 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 = 'plainmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Plain 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: 'plainmcp_getcustomers',
    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
  • plainmcp_getcustomerdetailsFetch a customer's full profile including email, assignment, company, and timestamps.Read-only

    GetCustomerDetails

    Fetch a customer's full profile including email, assignment, company, and timestamps.

    Inputs

    customerIdstringrequired
    Plain customer ID (starts with c_). Get it from getCustomers or getCustomerDetails.
  • plainmcp_getcustomersReturn a paginated list of all customers in the workspace.Read-only

    GetCustomers

    Return a paginated list of all customers in the workspace.

    Inputs

    cursorstring
    No description.
    firststring
    No description.default 50
    tenantIdentifiersstring
    No description.
  • plainmcp_getcustomerthreadsReturn all threads belonging to a specific customer, with optional status filtering.Read-only

    GetCustomerThreads

    Return all threads belonging to a specific customer, with optional status filtering.

    Inputs

    customerIdstringrequired
    No description.
    cursorstring
    No description.
    firststring
    No description.default 10
    statusDetailsstring
    No description.
    statusesstring
    No description.
  • plainmcp_gethelpcenterarticleFetch a single Help Center article by its ID.Read-only

    GetHelpCenterArticle

    Fetch a single Help Center article by its ID.

    Inputs

    idstringrequired
    Unique identifier of the resource.
  • plainmcp_gethelpcenterarticlebyslugFetch a Help Center article by its URL slug.Read-only

    GetHelpCenterArticleBySlug

    Fetch a Help Center article by its URL slug.

    Inputs

    helpCenterIdstringrequired
    Plain Help Center ID (starts with hc_). Get it from getHelpCenters.
    slugstringrequired
    URL slug of the Help Center article.
  • plainmcp_gethelpcenterarticlegroupsReturn all article groups for a Help Center.Read-only

    GetHelpCenterArticleGroups

    Return all article groups for a Help Center.

    Inputs

    helpCenterIdstringrequired
    No description.
    cursorstring
    No description.
    firststring
    No description.default 50
  • plainmcp_gethelpcenterarticlesReturn a paginated list of articles in a Help Center.Read-only

    GetHelpCenterArticles

    Return a paginated list of articles in a Help Center.

    Inputs

    helpCenterIdstringrequired
    No description.
    cursorstring
    No description.
    firststring
    No description.default 50
  • plainmcp_gethelpcentersReturn all Help Centers in the workspace.Read-only

    GetHelpCenters

    Return all Help Centers in the workspace.

    Inputs

    cursorstring
    No description.
    firststring
    No description.default 50