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
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>Create the DeepL MCP connection
In AgentKit > Connections, create a DeepL MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for DeepL MCP server, so you don't need to register an OAuth app.
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.actionsconst connector = 'deeplmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'deeplmcp_get_source_languages',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "deeplmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize DeepL MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="deeplmcp_get_source_languages",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_tooldeeplmcp_get_document_statusCheck the translation status of a document session.Read-onlyGet 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-onlyGet 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-onlyGet 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.WriteCorrect 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'.WriteDownload 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.WriteRephrase 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.WriteTranslate 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.WriteUpload 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_httpdefaultinline_ui
No tools match.