Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the DeepL MCP server

Vendor MCP
Open markdown

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

Tools
8
What they doRead · write · destructive
3 · 5 · 03 read5 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 DeepL MCP connection

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

    Scalekit credentials are available for DeepL 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 = 'deeplmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize DeepL 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: 'deeplmcp_get_source_languages',
    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
  • deeplmcp_get_document_statusCheck the translation status of a document session.Read-only

    Get Document Status

    Check the translation status of a document session. Returns one of: 'awaiting_upload' (file not received yet), 'queued', 'translating', 'done', or 'error'. The additive 'uploadStatus' is 'awaiting', 'uploading', or 'complete' when known. Once the status is 'done', call download-document.

    Inputs

    sessionIdstringrequired
    The session id returned by upload-document.
  • deeplmcp_get_source_languagesGet the source language codes supported by DeepL for translation, e.g.Read-only

    Get Source Languages

    Get the source language codes supported by DeepL for translation, e.g. 'EN' or 'DE'. Use one of these for the sourceLang parameter of translate-text.

    Inputs

    This tool takes no inputs.

  • deeplmcp_get_target_languagesGet the target language codes supported by DeepL for translation, e.g.Read-only

    Get Target Languages

    Get the target language codes supported by DeepL for translation, e.g. 'EN-US' or 'DE'. Use one of these for the targetLang parameter of translate-text.

    Inputs

    This tool takes no inputs.

  • deeplmcp_correct_textCorrect one or more texts for typos, grammar and punctuation errors using DeepL.Write

    Correct Text

    Correct one or more texts for typos, grammar and punctuation errors using DeepL.

    • Idempotent

    Inputs

    textarrayrequired
    One or more texts to correct.
    targetLangstring
    Optional target language code. DeepL Write supports: DE, EN-GB, EN-US, ES, FR, IT, JA, KO, PT-BR, PT-PT, ZH-HANS.
  • deeplmcp_download_documentGet a download link for a translated document once its status is 'done'.Write

    Download Document

    Get a download link for a translated document once its status is 'done'. Returns 'downloadUrl', a short-lived, single-use link. Fetch it with an HTTP GET (the URL carries its own token, so do not add an Authorization header), or present it to the user. The link works only once. The bytes are streamed from the server and never pass through this conversation.

    Inputs

    sessionIdstringrequired
    The session id returned by upload-document.
  • deeplmcp_rephrase_textRephrase text in the same or a different language using DeepL.Write

    Rephrase Text

    Rephrase text in the same or a different language using DeepL.

    • Idempotent

    Inputs

    textarrayrequired
    One or more texts to rephrase.
    targetLangstring
    Target language code. Optional for a plain rephrase (auto-detected), but REQUIRED when a writingStyle or tone is set. DeepL Write supports: DE, EN-GB, EN-US, ES, FR, IT, JA, KO, PT-BR, PT-PT, ZH-HANS — styles/tones work only on DE, EN-GB, EN-US, ES, FR, IT, PT-BR, PT-PT.
    tonestring
    Optional tone for the output: confident, diplomatic, enthusiastic, or friendly. Requires a style-capable targetLang. Specify either a writing style or a tone, not both.one of confidentdiplomaticenthusiasticfriendly
    writingStylestring
    Optional writing style for the output: academic, business, casual, or simple. Requires a style-capable targetLang.one of academicbusinesscasualsimple
  • deeplmcp_translate_textTranslate text to a target language using DeepL.Write

    Translate Text

    Translate text to a target language using DeepL. Use this for plain text provided directly in the conversation — snippets, strings, messages, or passages pasted by the user. Do not use this to translate a file or document (e.g. Word, PowerPoint, Excel, PDF, HTML, .txt, .srt, .xlf/.xliff) — even if you can already read its contents — because it returns plain text and discards the document's layout and formatting. For files, use upload-document instead. Review the optional parameters and use those that apply for best results. When using a glossary, you must specify the source language as well as the target language. If the user references a glossary by name, use list-glossaries to look up its id. An unknown glossaryId is silently ignored (translation proceeds without it). An administrator may assign a language system (style profile) to the account, whose glossaries and style rule set can replace the glossaryId and styleId passed here; 'appliedCustomizations' in the result says so when it happened.

    • Idempotent

    Inputs

    targetLangstringrequired
    Target language code, e.g. 'EN-US' or 'DE'.
    textstringrequired
    The text to translate.
    contextstring
    Optional description of the text's domain to improve translation quality. Not itself translated. At most 300 characters.
    customInstructionsarray
    Optional custom instructions to steer translation. Max 10 instructions, 300 characters each.
    formalitystring
    Controls formality: 'less', 'more', 'default', 'prefer_less', or 'prefer_more'. Only some target languages support this.one of lessmoredefaultprefer_lessprefer_more
    glossaryIdstring
    Glossary id to ensure consistent terminology.
    sourceLangstring
    Source language code, e.g. 'EN' or 'DE'. Omit to let DeepL auto-detect.
    styleIdstring
    Style rule set id from list-style-rule-sets. Its own custom instructions are applied with it, so do not repeat them below.
  • deeplmcp_upload_documentTranslate a whole file or document, preserving its original layout and formatting.Write

    Upload Document

    Translate a whole file or document, preserving its original layout and formatting. Use this — not translate-text — whenever the user wants to translate a file or document (rather than text typed into the conversation), even if its contents are already visible to you; translate-text would strip the formatting. For plain text pasted into the conversation, use translate-text instead. Supported file types: Word (.docx, .doc), PowerPoint (.pptx, .ppt), Excel (.xlsx, .xls), PDF, HTML (.html, .htm), plain text (.txt), subtitles (.srt), and XLIFF (.xlf, .xliff). This call starts the translation and returns 'sessionId', 'uploadUrl', and 'uploadPageUrl'. Select 'agent_http' only when you can read the referenced file and perform an HTTP PUT. In that mode, pass 'filename' with a supported extension and send the raw file bytes to 'uploadUrl' with 'Content-Type: application/octet-stream'. Select 'inline_ui' otherwise. In 'inline_ui', the MCP App collects the file; when no MCP App renders, give the user 'uploadPageUrl' to select it in a browser. Then poll get-document-status with the sessionId until it reports 'done', and call download-document. The file bytes never pass through this conversation. An administrator may assign a language system (style profile) to the account, whose glossaries and style rule set can replace the glossaryId and styleId passed here; 'appliedCustomizations' in the result says so when it happened.

    Inputs

    targetLangstringrequired
    Target language code, e.g. 'EN-US' or 'DE'. Use get-target-languages to discover supported codes.
    customInstructionsarray
    Free-text instructions that steer the translation (e.g. 'Use a friendly tone'). Requires a DeepL Pro plan.
    filenamestring
    Original file name including its extension (e.g. 'report.docx'). Required for 'agent_http'; the inline_ui picker supplies it when the user selects a file.
    formalitystring
    Controls formality: 'less', 'more', or 'default'. Only some target languages support this. Requires a DeepL Pro plan.one of lessmoredefault
    glossaryIdstring
    Id of a glossary to apply. Requires sourceLang; the glossary must have a dictionary for the source/target pair. Use list-glossaries to discover ids. Requires a DeepL Pro plan.
    sourceLangstring
    Source language code, e.g. 'EN'. Omit to let DeepL auto-detect. Required when using a glossary.
    styleIdstring
    Style rule set id from list-style-rule-sets. Its own custom instructions are applied with it, so do not repeat them below. Requires a DeepL Pro plan.
    uploadModestring
    Select 'inline_ui' for the widget or 'agent_http' when you can HTTP PUT the referenced file. Defaults to 'inline_ui'.one of inline_uiagent_httpdefault inline_ui