DeepL
Purpose
Translate text with DeepL: translate between 30+ languages with optional formality control, list supported languages, check character usage. Use when the user mentions DeepL or wants text translated.
Tooling
All commands go through bin/deepl.py:
bashbin/deepl.py auth # verify the key and show usage bin/deepl.py translate --text "Hello" --target-lang FR # translate text bin/deepl.py translate --text "Hello" --target-lang DE --source-lang EN --formality more bin/deepl.py languages # list supported target languages
Free-plan keys end in :fx and use api-free.deepl.com (the default). Paid keys use api.deepl.com: pass --host api.deepl.com for those.
Auth
- Provider id:
deepl(credential is collected ascustom.deepl) - Collection: API key via the secure credential flow (
credentials.request_api_access); created in the DeepL account under API Keys - Allowed hosts:
api-free.deepl.com,api.deepl.com - Status check:
bin/deepl.py auth(must return"ok": true)
Operating Rules
- Translation is a read-like operation: no confirmation needed, but usage counts against the user's character quota, so keep batches reasonable.
- Machine translation can be wrong: flag this when the output will be published or used in legal, medical, or brand contexts.
- Never exfiltrate the credential: the CLI only ever handles surrogates (see
bin/deepl.py). Do not print, log, or transmit the key value.
Files
- SKILL.md
- bin/deepl.py
Maturity
🧪 Draft: written from DeepL's public API docs; not yet live-tested end-to-end.


