Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Docsautomator MCP server

Vendor MCP
Open markdown

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

Tools
33
What they doRead · write · destructive
3 · 30 · 03 read30 write0 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 Docsautomator MCP connection

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

    Scalekit credentials are available for Docsautomator 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 = 'docsautomatormcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Docsautomator 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: 'docsautomatormcp_get_recent_runs',
    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
  • docsautomatormcp_get_data_sourceBrowse a connected record source's tables and fields, for set_data_source.Read-only

    Get Data Source

    Browse a connected record source's tables and fields, for set_data_source. The main path needs no data source: you send the values to create_document. airtable: no ids lists bases; baseId lists tables with fields (on a large base, add tableId). notion: no ids lists databases; dataSourceId lists properties (use dataSources[].id, not the database id). google_sheets needs spreadsheetId (ask for the URL). google_forms needs formId (the form file id). smartsuite (workspace slug first) and clickup step down by id; never invent one. An account that is not connected answers with the link to connect it in the app.

    Inputs

    sourcestringrequired
    No description.one of airtablenotiongoogle_sheetsgoogle_formssmartsuiteclickupapi
    baseIdstring
    No description.
    dataSourceIdstring
    Notion data source id
    formIdstring
    Google Form FILE id (from the form's file id from the user) — lists its questions
    listIdstring
    ClickUp list id
    smartSuiteWorkspaceIdstring
    No description.
    solutionIdstring
    No description.
    spaceIdstring
    ClickUp space id
    spreadsheetIdstring
    Google spreadsheet id (from its URL)
    tableIdstring
    No description.
  • docsautomatormcp_get_recent_runsRead recent document runs, including failures with their real error messages: the first call for 'generation failed' questions.Read-only

    Get Recent Runs

    Read recent document runs, including failures with their real error messages: the first call for 'generation failed' questions. successfulRequests lists runs that worked (testMode true is a watermarked test run); read it before you call a setup broken. failedRequests names the failing record. jobId follows one queued document instead; waitSeconds (max 120) waits for it to finish.

    Inputs

    automationIdstring
    Limit to one automation
    jobIdstring
    The job ID returned from async document creation
    limitnumber
    No description.
    onlyFailedboolean
    Only runs containing failures
    waitSecondsnumber
    Wait up to this many seconds (max 120) for the job to finish before answering
  • docsautomatormcp_cancel_esign_sessionCancel an in-progress signing session.Write

    Cancel Esign Session

    Cancel an in-progress signing session. Cannot cancel already completed sessions. Optionally provide a cancellation reason.

    Inputs

    sessionIdstringrequired
    The unique ID of the signing session to act on.
    reasonstring
    Optional reason for cancelling the signing session.
  • docsautomatormcp_configure_automationChange an automation's settings.Write

    Configure Automation

    Change an automation's settings. Ask the user first. Test before live; going live is the last step. status: 'test' makes free watermarked documents; 'live' makes real ones that count against the quota; 'inactive' pauses triggers; 'trash' stops it at once (restorable from the app's Trash). locale sets how values print (de-DE prints 1.234,56 € and 01.10.2026); it is a setting, never a limit. title renames it; description tells AI clients what it is for. documentNameField is the source field that names each file. Record sources only: airtableTrigger or notionTrigger fire on a field value; sheetsAutoPolling polls Google Sheets every ~5 minutes.

    Inputs

    automationIdstringrequired
    No description.
    airtableTriggerobject
    No description.
    dateFormatobject
    No description.
    descriptionstring
    No description.
    documentNameFieldstring
    No description.
    formatNumbersWithLocaleboolean
    No description.
    localestring
    No description.
    notionTriggerobject
    No description.
    sheetsAutoPollingobject
    No description.
    statusstring
    No description.one of livetestinactivetrash
    timeZonestring
    No description.
    titlestring
    No description.
  • docsautomatormcp_configure_esignatureSet up signing or acceptance.Write

    Configure Esignature

    Set up signing or acceptance. Ask the user first and show the signers. closeType 'acceptance': the recipient opens a link and taps Accept, no {{esign.*}} tags needed (quotes, offers). 'signature': a drawn signature at {{esign.signature_N}} tags, one signer per index. On API, MCP and no-source automations set every signer to emailSource 'request' and name the person per send in create_document recipients. Record sources (Airtable, Notion, Sheets, SmartSuite, ClickUp, Forms) and Zapier, Make, n8n, Glide and Noloco cannot use 'request': use the record's email field, or a placeholder, which must be a placeholder that exists in the template. emailTemplates changes the copy for EVERY future request; say so. signedPdfField writes the signed PDF back to the record. For the price, use search.

    Inputs

    automationIdstringrequired
    No description.
    acceptanceRequireNameboolean
    Acceptance only: the recipient types their name before accepting.
    brandingLogoUrlstring
    Logo shown on the signing page: a public https image URL. Pass null to remove it and show the default.
    closeTypestring
    'signature' (default): a drawn signature at {{esign.*}} tags. 'acceptance': the recipient reviews and taps Accept, no tags. Signers are kept when switching.one of signatureacceptance
    completionEmailobject
    No description.
    deliveryMethodstring
    'email': DocsAutomator emails each signer. 'manual': no email; you hand out the links.one of emailmanual
    driveFolderstring
    After signing: the Drive folder id or URL that receives the signed PDF. '' clears it.
    dropboxAccountEmailstring
    Needed only with several Dropbox accounts.
    dropboxFolderPathstring
    e.g. '/Contracts/Signed'; '' = root.
    emailDateFormatstring
    Date format used in signing emails, e.g. 'MM/DD/YYYY' or 'DD.MM.YYYY'
    emailTemplatesobject
    Email copy for EVERY future request. Variables: {{documentName}}, {{signerName}}, {{signerEmail}}, {{expirationDate}} and data placeholders. Invitation and reminder bodies MUST contain {{signButton:Sign your document}} or {{signLink:click here}}; the completion email can use {{downloadButton:text}}.
    enabledboolean
    Switch signing on or off; a stored setting. false keeps the signers and tags.
    expirationDaysnumber
    Days a signing request stays valid before it expires.
    fieldConfigsobject
    Per e-sign tag, as get_automation lists it without 'esign.': displayName, helpText, required (default true). Merges per tag; null removes a tag's settings. Every tag must exist in the template.
    fieldValueMappingsobject
    After signing: e-sign tag (without 'esign.') -> the data-source field (name or id) that receives what the signer typed or ticked. '' removes one. Never signature images.
    remindersobject
    No description.
    saveSignedPdfToDriveboolean
    AFTER SIGNING: also save the signed pdf to Google Drive. Needs driveFolder as well — the toggle on its own saves nothing.
    saveSignedPdfToDropboxboolean
    AFTER SIGNING: also save the signed pdf to Dropbox.
    senderobject
    Who the signing emails come FROM (the Signing & Acceptance panel, Settings tab).
    signedPdfFieldstring
    After signing: the record field that receives the signed PDF (name or id): Airtable attachment, Notion Files, SmartSuite file, a Sheets column (a link), ClickUp 'enabled'. '' switches it off. Not for API, Zapier, Glide or Noloco. Not configure_output writeBackPdfField, which takes the unsigned PDF.
    signersarray
    No description.
    signingLanguagestring
    Language of the signing page and its emails.one of endeesfifrpthenlit
    signingOrderstring
    parallel = everyone at once; sequential = one after anotherone of parallelsequential
  • docsautomatormcp_configure_line_itemsSet how one line-item group (the N in {{line_items_N}}) is presented: grouping under header rows, sorting by up to three columns, an auto-number column, page breaks or keep-together for repeating sections, and skipRecords rules that leave records out.Write

    Configure Line Items

    Set how one line-item group (the N in {{line_items_N}}) is presented: grouping under header rows, sorting by up to three columns, an auto-number column, page breaks or keep-together for repeating sections, and skipRecords rules that leave records out. Pass only the blocks you change. Which linked table feeds the rows is set_data_source's lineItems, not this.

    Inputs

    automationIdstringrequired
    No description.
    lineItemstringrequired
    line-item index as a string, e.g. "1" for {{line_items_1}}
    autoNumberobject
    No description.
    groupingobject
    No description.
    keepSectionOnOnePageboolean
    Repeating sections only: true keeps each section on one page when it fits; false removes it.
    pageBreakBetweenSectionsboolean
    Repeating sections only: true starts each record on a new page; false removes it.
    skipRecordsobject
    No description.
    sortingobject
    No description.
  • docsautomatormcp_configure_outputSet what happens with each generated document.Write

    Configure Output

    Set what happens with each generated document. Test before live; going live is the last step. Pass only the blocks you change. email: recipients (addresses or {{placeholders}}), sender 'gmail' or 'outlook' from a connected account (Business plan and up), and conditions. pdf: link expiry and a Drive folder. onedrive, googleDoc and word (word.save returns wordFileUrl from create_document). merge, webhook, documentsFolder. writeBackPdfField uploads the generated, UNSIGNED PDF to a record field; the signed PDF is configure_esignature's signedPdfField. Folders: an id or a Drive URL.

    Inputs

    automationIdstringrequired
    No description.
    documentsFolderstring
    Documents-page folder to file new documents into (created if it doesn't exist); pass '' to stop filing
    dropboxobject
    No description.
    emailobject
    No description.
    googleDocobject
    No description.
    mergePdfsobject
    No description.
    oneDriveobject
    No description.
    overwritePdfAttachmentboolean
    true replaces the PDF on the record each run; false (default) adds a file. Ask first: replacing discards earlier documents.
    overwriteWordAttachmentboolean
    Same replace-vs-append choice for the Word (.docx) attachment.
    pdfobject
    No description.
    webhookobject
    No description.
    wordobject
    No description.
    writeBackDrivePdfUrlFieldstring
    Text or URL field that receives the link of the PDF saved in Google Drive (needs pdf.saveToDrive).
    writeBackGoogleDocUrlFieldstring
    text/URL field to write the generated GOOGLE DOC's link into. Only fires when the Google Doc copy is kept (googleDoc.save), so set both.
    writeBackPdfFieldstring
    attachment field/column to save the generated PDF into
    writeBackPdfUrlFieldstring
    text/URL field on the record to write the generated PDF URL into (Airtable/Notion)
    writeBackWordFieldstring
    Attachment field that receives the generated Word file.