# DeepL MCP Server — 27 tools via DADL

The DeepL DADL turns DeepL's API into an MCP server that Claude, GPT or any MCP-compatible agent can consume directly. One YAML file declares all 27 tools — glossary, style, document, text, custom, translation, and more — and ToolMesh serves them at runtime. No Python boilerplate, no per-endpoint code, no separate MCP server process.

Below: the endpoint coverage matrix, a two-block ToolMesh setup, the full tool reference grouped by DeepL feature area.

**Source:** [DeepL REST API (v2 + v3)](https://developers.deepl.com/api-reference)

**Updated:** 2026-05-21

**Tags:** translation, crud, file-management, metrics, auth:bearer

## Which DeepL endpoints are covered?

**71%** (27 of ~38 endpoints).

**Focus:** text translation (with style_id / translation_memory_id / custom_instructions / tag_handling v2), document translation, multilingual v3 glossaries, style rules (CRUD + custom instructions + configured rules), translation memory listing, text improvement (Write/rephrase), v3 languages and usage

**Missing:** admin API (org analytics, developer key management), voice translation (WebSocket, not REST), language detection beta endpoint, translation memory mutation (TM create/edit are web-UI only as of 2026-05)


*Last reviewed: 2026-05-21*

## How do you configure the DeepL DADL?

1. Sign up for a DeepL API plan at https://www.deepl.com/pro-api
2. Choose API Free (500k chars/month) or API Pro (pay-per-use, unlocks style rules + TM + multilingual glossaries)
3. Open Account → API Keys
4. Create a new Authentication Key and copy it
5. Free keys end with ':fx' and require api-free.deepl.com — Pro keys use api.deepl.com
6. Store the key in your credential store under the name 'deepl_auth_key'

**Environment variable:** `CREDENTIAL_DEEPL_AUTH_KEY`

[Authentication docs](https://developers.deepl.com/docs/getting-started/auth)

*The legacy auth_key query parameter was deprecated in Nov 2025 — all auth must use the Authorization header with "DeepL-Auth-Key" scheme. Style rules, translation memory and multilingual glossaries are Pro-only. Rate limits are not publicly documented; 429 and 529 include Retry-After. Free plan returns 456 (not 429) when the monthly character quota is exhausted.
*

## How do you install the DeepL MCP server with ToolMesh?

Add to your `backends.yaml`:

```yaml
- name: deepl
  transport: rest
  dadl: deepl.dadl
  url: "https://api.deepl.com"       # Free plan: https://api-free.deepl.com

```

Set the credential:

```
CREDENTIAL_DEEPL_AUTH_KEY=your-token-here
```

## What 27 tools does the DeepL DADL expose?

- **POST** `translate` — Translate text into a target language. Up to 50 texts per request, max 128 KiB body. Auto-detects source language when source_lang is omitted. Setting style_id, custom_instructions or translation_memory_id implicitly switches model_type to quality_optimized.

- **POST** `upload_document` — Upload a document for translation. Returns {document_id, document_key} for status polling and download. Supports docx, doc, pptx, xlsx, pdf, htm, html, txt, xlf, xliff, srt, jpeg, jpg, png.

- **POST** `check_document_status` — Check translation status of an uploaded document. status is one of queued, translating, done, error. Poll with exponential backoff — seconds_remaining can be wildly off (sometimes 2^27).

- **POST** `download_document` — Download the translated document. Only valid when status is 'done'. The document is auto-deleted on first successful download — store it before retrying.

- **GET** `list_glossaries` — List all multilingual glossaries on the account. Returns array under 'glossaries'.
- **POST** `create_glossary` — Create a multilingual glossary. The dictionaries array carries one entry per source→target language pair. Use lowercase 2-letter codes (en, de, fr). entries_format must be 'tsv' or 'csv'; entries is a single string with one pair per line (source TAB target for TSV, source COMMA target for CSV).

- **GET** `get_glossary` — Retrieve metadata of a single glossary (name, dictionary inventory, creation time)
- **PATCH** `update_glossary` — Update the glossary name and/or merge new dictionary entries. Existing entries for the same source→target pair are merged (new pairs added, conflicting pairs overwritten).

- **DELETE** `delete_glossary` — Permanently delete a glossary and all its dictionaries. Cannot be undone.
- **GET** `get_glossary_entries` — Retrieve all term pairs of a single dictionary inside the glossary, identified by the (source_lang, target_lang) query pair. Returns TSV.

- **PUT** `replace_glossary_dictionary` — Replace (or create) the dictionary for a single source→target language pair in an existing glossary. Existing entries for that pair are overwritten.

- **DELETE** `delete_glossary_dictionary` — Delete a single dictionary (one language pair) from a multilingual glossary
- **GET** `list_style_rules` — List style rule lists on the account. Set detailed=true to include the full configured_rules and custom_instructions per list. Paginated.

- **POST** `create_style_rule` — Create a style rule list for a single language. configured_rules covers 7 categories (dates_and_times, formatting, numbers, punctuation, spelling_and_grammar, style_and_tone, vocabulary) — each with predefined enum options. custom_instructions adds free-form prompts (max 200, 300 chars each).

- **GET** `get_style_rule` — Retrieve a single style rule list with its configured_rules and custom_instructions
- **PATCH** `update_style_rule` — Rename a style rule list (other fields are immutable — use the dedicated sub-endpoints to mutate rules/instructions)
- **DELETE** `delete_style_rule` — Permanently delete a style rule list and all its custom instructions. Cannot be undone.
- **PUT** `replace_configured_rules` — Replace the entire configured_rules object on a style rule list. Send the full object — fields omitted are reset to default.

- **POST** `add_custom_instruction` — Add a custom instruction to an existing style rule list. Up to 200 per style rule.
- **GET** `get_custom_instruction` — Retrieve a single custom instruction
- **PUT** `update_custom_instruction` — Replace a custom instruction (label/prompt/source_language). All fields are sent — omitted fields reset.
- **DELETE** `delete_custom_instruction` — Permanently remove a custom instruction from a style rule list
- **GET** `list_translation_memories` — List translation memories on the account. Each entry carries {translation_memory_id, name, source_language, target_languages, segment_count}. Paginated, max page_size 25.

- **POST** `rephrase_text` — Improve and rephrase text without changing the language (max 10 KiB body). Supports writing styles and tones. Does NOT translate — target_lang must match the source language (one of: de, en-GB, en-US, es, fr, it, ja, ko, pt-BR, pt-PT, zh). writing_style and tone are mutually exclusive in a single call.

- **GET** `list_languages` — List languages supported for a given resource. Returns formality, glossary and other feature flags relevant to that resource. Resource is required.

- **GET** `list_language_resources` — List the supported 'resource' values usable with list_languages (translate_text, glossary, ...)
- **GET** `get_usage` — Retrieve character usage and quota for the current billing period. Returns character_count (consumed) and character_limit (cap). Pro plans return very large limits; Free is exactly 500000.


## Which DADLs are related to DeepL?

- [Hetzner Cloud](https://www.dadl.ai/d/hetzner-cloud/) — Hetzner Cloud API -- servers, volumes, networks, load balancers, firewalls, floating IPs, primary IPs, images, SSH keys, placement groups, certificates, and infrastructure metadata
- [BookStack](https://www.dadl.ai/d/bookstack/) — BookStack wiki and documentation platform REST API -- shelves, books, chapters, pages (HTML/Markdown content), attachments, image gallery, comments, cross-entity search, exports (HTML/Markdown/PDF/ZIP), ZIP imports, users, roles, content permissions, recycle bin, audit log and tags. Hierarchy: shelves > books > chapters > pages.
- [DokuWiki](https://www.dadl.ai/d/dokuwiki/) — DokuWiki JSON-RPC API — wiki pages, media files, search, ACL management, and user administration
- [GitLab](https://www.dadl.ai/d/gitlab/) — GitLab REST API v4 — projects, issues, merge requests, pipelines, CI/CD, and code search
- [Mastodon](https://www.dadl.ai/d/mastodon/) — Mastodon REST API — statuses, timelines, accounts, notifications, search, media, lists, polls, conversations, trends, filters, and instance info. Base URL must be set to the target Mastodon instance (e.g. https://mastodon.social).
- [Mikrotik](https://www.dadl.ai/d/mikrotik/) — MikroTik RouterOS REST API -- manage interfaces, IP addresses, routing, firewall, DHCP, DNS, PPP, queues, wireless, system configuration, users, certificates, files, logs, and diagnostics on RouterOS v7.1+ devices

---

**Canonical URL:** https://www.dadl.ai/d/deepl/
**Raw DADL:** https://github.com/DunkelCloud/dadl-registry/blob/main/deepl.dadl
