Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Dovetail MCP server

Vendor MCP
Open markdown

The Dovetail MCP connector routes your AI agent's tool calls to Dovetail's own MCP server through Scalekit. Each user connects their own Dovetail access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 56 tools.

Tools
56
What they doRead · write · destructive
39 · 17 · 039 read17 write0 destructive
Users sign in with

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

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

  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 = 'dovetailmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Dovetail 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: 'dovetailmcp_get_dovetail_projects',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user opens the link once and enters their Dovetail MCP server credentials there. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • dovetailmcp_download_fileGet a short-lived presigned URL to download the raw content of a file attachment.Read-only

    Download File

    Get a short-lived presigned URL to download the raw content of a file attachment.

    Inputs

    file_idstringrequired
    The ID of the file
  • dovetailmcp_get_channelRetrieve detailed information about a specific channel by its unique ID, including its topics.Read-only

    Get Channel

    Retrieve detailed information about a specific channel by its unique ID, including its topics.

    Inputs

    channel_idstringrequired
    The ID of the channel
  • dovetailmcp_get_channel_datumRetrieve a single channel data point by its ID, including its theme classifications.Read-only

    Get Channel Datum

    Retrieve a single channel data point by its ID, including its theme classifications.

    Inputs

    datum_idstringrequired
    The ID of the datum
  • dovetailmcp_get_contactRetrieve a single contact by its unique identifier.Read-only

    Get Contact

    Retrieve a single contact by its unique identifier. Contacts represent research participants or customers in the Dovetail workspace.

    Inputs

    contact_idstringrequired
    The ID of the contact
  • dovetailmcp_get_data_contentExport and retrieve the complete content of a research data entry as markdown.Read-only

    Get Data Content

    Export and retrieve the complete content of a research data entry as markdown.

    Inputs

    data_idstringrequired
    The ID of the data
    include_file_contentboolean
    Set to true to also read the extracted text of the entry's attached document files (PDF, DOCX, PPTX, XLSX) — by default attached files appear only as links and their text is not included. When true, the response body becomes the entry's full indexed content (its own text plus all files' text, each file's pages delimited by a `<file name> - <page number>` header so you can attribute content to its source file) and the response includes a files list with per-file text_status (ready/pending/failed/unsupported/unavailable) plus indexed/truncated flags: if indexed is false the entry hasn't reached the search index yet — retry shortly; for pending files, retry later. The call fails with 403 if any attached file has been deleted under the workspace's data retention policy — retention removes the file's bytes but its extracted text remains in the search index, so the request is refused rather than returning that text. For audio/video files, transcripts are already part of the entry body. Formatting note: extracted file text comes from OCR/PDF text extraction and often contains artifacts — spaces inside words, irregular whitespace, broken line breaks, stray page numbers or headers, out-of-order columns. These are extraction noise, not the author's formatting: mentally reconstruct the intended text before analyzing, and normalize whitespace when quoting rather than reproducing artifacts verbatim.
    max_charsinteger
    Maximum number of characters of the content body to return. Omit to return from offset to the end. Use this to re-fetch in chunks when a previous response was truncated by your client — see the content_pagination field in the response.
    offsetinteger
    Character offset into the content body to start from. Combine with max_chars to page through long content. Defaults to 0 (start of body).
  • dovetailmcp_get_docRetrieve detailed metadata for a single Dovetail doc by its unique ID.Read-only

    Get Doc

    Retrieve detailed metadata for a single Dovetail doc by its unique ID.

    Inputs

    doc_idstringrequired
    The ID of the doc
  • dovetailmcp_get_doc_commentRetrieve a single comment on a Dovetail doc by its unique identifier.Read-only

    Get Doc Comment

    Retrieve a single comment on a Dovetail doc by its unique identifier.

    Inputs

    comment_idstringrequired
    The ID of the comment
    doc_idstringrequired
    The ID of the doc
  • dovetailmcp_get_doc_contentExport and retrieve the complete content of a Dovetail doc in markdown format.Read-only

    Get Doc Content

    Export and retrieve the complete content of a Dovetail doc in markdown format.

    Inputs

    doc_idstringrequired
    The ID of the doc
    max_charsinteger
    Maximum number of characters of the content body to return. Omit to return from offset to the end. Use this to re-fetch in chunks when a previous response was truncated by your client — see the content_pagination field in the response.
    offsetinteger
    Character offset into the content body to start from. Combine with max_chars to page through long content. Defaults to 0 (start of body).