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 23 tools.

Tools
23
What they doRead · write · destructive
4 · 19 · 04 read19 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_profile',
    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
    searchstring
    No description.
    smartSuiteWorkspaceIdstring
    No description.
    solutionIdstring
    No description.
    spaceIdstring
    ClickUp space id
    spreadsheetIdstring
    Google spreadsheet id (from its URL)
    tableIdstring
    No description.
  • docsautomatormcp_get_profileThe connected workspace (id, name, account email) and its plan: documents used and included this period, overage cap (most documents with overage on), period end.Read-only

    Get Profile

    The connected workspace (id, name, account email) and its plan: documents used and included this period, overage cap (most documents with overage on), period end. Trials make unlimited test documents.

    Inputs

    This tool takes no inputs.

  • 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
    includeDataboolean
    Also return the values each API or chat run was made with (kept 90 days), e.g. to make the same document again with changes
    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 open signing or acceptance session: its links stop working.Write

    Cancel Esign Session

    Cancel an open signing or acceptance session: its links stop working. A completed session cannot be cancelled.

    Inputs

    sessionIdstringrequired
    No description.
    reasonstring
    No description.
  • 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.
    approvalobject
    No description.
    dateFormatobject
    No description.
    descriptionstring
    No description.
    documentNameFieldstring
    No description.
    eInvoiceobject
    This automation's e-invoice: { enabled, format: zugferd|xrechnung, documentType: 380 (invoice)|381 (credit note), vatTreatment: standard|reverse_charge_de|reverse_charge_eu|intra_eu_goods|small_business, fields: { <key>: {placeholder}|{fieldId}|{value} } (prepaidAmount = amount already paid), seller: { <seller key>: {placeholder}|{fieldId}|{value} } (this automation only; unset keys use the workspace seller), lineItems: { source: line_items_N, columns: { <key>: {placeholder}|{fieldId} } } }
    eInvoiceAddonboolean
    E-invoice add-on on or off, for the whole workspace
    formatNumbersWithLocaleboolean
    No description.
    localestring
    No description.
    notionTriggerobject
    No description.
    qrBillobject
    Only this automation's QR-bill seller: { seller: { name|street|postcode|city|country|iban|qrIban: <ref as in eInvoice> } }; unset keys use Settings
    sellerobject
    Workspace e-invoice seller details; sent keys change: name, tradingName, street, addressLine2, postcode, city, country (2 letters), vatId, taxNumber, registrationId, contactName, contactPhone, contactEmail, iban, bic, accountName
    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
    Signing-page logo: a public https image URL; null restores the default.
    closeTypestring
    'signature' (default): a signature (drawn or typed) 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': you hand out the links.one of emailmanual
    driveFolderstring
    After signing: Drive folder id or URL for 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 need {{signButton:Sign your document}} or {{signLink:click here}}; the completion email can use {{downloadButton:text}}.
    enabledboolean
    Switch signing on or off. false keeps the signers and tags.
    expirationDaysnumber
    Days a signing request stays valid before it expires.
    fieldConfigsobject
    Per e-sign tag in the template, without 'esign.': displayName, helpText, required (default true). Merges per tag; null removes its settings.
    fieldValueMappingsobject
    E-sign tag (without 'esign.') -> the field (name or id) that gets what the signer typed or ticked. '' removes one. Signatures are not written back.
    remindersobject
    No description.
    saveSignedPdfToDriveboolean
    After signing: also save the signed PDF to Google Drive; needs driveFolder.
    saveSignedPdfToDropboxboolean
    AFTER SIGNING: also save the signed pdf to Dropbox.
    senderobject
    Who the signing emails come FROM (the Signing & Acceptance panel, Settings tab).
    signedPdfFieldstring
    Record field for the signed PDF (name or id): Airtable attachment, Notion Files, SmartSuite file, a Sheets column (a link), ClickUp 'enabled'. '' switches it off. Not on API, Zapier, Glide or Noloco. The unsigned PDF is configure_output writeBackPdfField.
    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.