Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the SpecStream MCP server

Vendor MCP
Open markdown

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

Tools
61
What they doRead · write · destructive
36 · 15 · 1036 read15 write10 destructive
Users sign in with
OAuth app
Your own SpecStream 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 SpecStream MCP connection

    In AgentKit > Connections, create a SpecStream 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

    SpecStream MCP server connections use your own OAuth app. Register one with SpecStream MCP server and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the SpecStream 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 = 'specstreammcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize SpecStream 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: 'specstreammcp_get_capacity_balance',
    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
  • specstreammcp_compileRead a request for a list, written in everyday words in any language: companies and local businesses, products and stores, jobs, papers, clinical trials, grants, tenders, datasets, repositories and packages, apps, books or podcasts.Read-only

    Understand a request

    Read a request for a list, written in everyday words in any language: companies and local businesses, products and stores, jobs, papers, clinical trials, grants, tenders, datasets, repositories and packages, apps, books or podcasts. Return how SpecStream understood it: what to find, the conditions every result must meet, the facts to bring back (required or optional), how many, and in what order, with the ast_hash that identifies this reading. To add facts to, extend or refresh a list you have, name it with its parent_find_id and the operation: what it finds and its conditions stay as they are, and only the new facts to bring back or the new count are read. The caller must be allowed to read that list. Nothing runs and nothing is charged.

    Inputs

    qstringrequired
    The request for a list, written in everyday words in any language. SpecStream reads it and returns how it understood it; nothing runs and nothing is charged.
    localestring
    The locale code for the request, written as a two-letter language code, a hyphen and a two-letter region code. It defaults to en-US.default en-US
    retainedstring
    Optional reference to a list you already have, to extend it, add facts to it or refresh it. It names the earlier run and the operation, and what that list finds and its conditions stay as they are.
  • specstreammcp_edit_specChange a condition or a fact to bring back without rewording the request.Read-only

    Change what to find or bring back

    Change a condition or a fact to bring back without rewording the request. Send the revised reading as ast with the edit operations, and get back a checked reading with a new ast_hash for the next quote. Results that already ran stay as they were.

    Inputs

    astobjectrequired
    The revised reading of the request, as a structured object, sent together with the edit operations. SpecStream checks it and returns a checked reading with a new ast_hash.
    operationsarrayrequired
    The edit operations that change the conditions or facts to bring back, sent together with ast. Each operation either sets or removes one item.
  • specstreammcp_get_capacity_balanceRead the balance available for work.Read-only

    Check the balance

    Read the balance available for work. A balance is not permission to spend: paid work still needs the user's approval of a quote.

    Inputs

    project_idstring
    Optional ID of the SpecStream project to scope the balance request to. Leave empty if you are not working inside a project.
  • specstreammcp_get_capacity_quoteRead a quote and any work already approved from it.Read-only

    Reopen a quote

    Read a quote and any work already approved from it.

    Inputs

    quote_idstringrequired
    TODO
  • specstreammcp_get_capacity_requestReturn the work started with an idempotency_key, so a retry doesn't start it twice.Read-only

    Find work already started

    Return the work started with an idempotency_key, so a retry doesn't start it twice.

    Inputs

    request_keystringrequired
    TODO
    project_idstring
    TODO
  • specstreammcp_get_collectionRead a collection's records, columns and saved views.Read-only

    Open a collection

    Read a collection's records, columns and saved views.

    Inputs

    collection_idstringrequired
    TODO
  • specstreammcp_get_findRead a run's request, progress, and what it has cost so far.Read-only

    Check on a run

    Read a run's request, progress, and what it has cost so far. After the user approves a quote, check it until the run finishes.

    Inputs

    find_idstringrequired
    TODO
  • specstreammcp_get_input_researchRead each original input row, the source-backed identity decision, unresolved namesakes and its delivered record.Read-only

    Review imported research

    Read each original input row, the source-backed identity decision, unresolved namesakes and its delivered record. Name and location are search hints, not verified facts. Use this after researching an imported list; a missing identity must not be guessed or called a Match. No charge or new research.

    Inputs

    find_idstringrequired
    The ID of the find (also called a run) that researched an imported list. The original input rows, identity decisions and delivered records of that find are read.