CEFR level of a text
Estimate the CEFR reading level (A1–C2) of a text, with separate levels for vocabulary, grammar and sentence structure, the reasons, and the words above the overall level.

Details
Languages: English, German, French, Spanish, Italian, Dutch, Portuguese, Russian, Thai, Chinese, Japanese (others are attempted).
Also returns deterministic statistics: words, sentences, average sentence and word length, lexical variety, and a readability score with the formula used for that language (Flesch, Amstad, Kandel-Moles, Fernández Huerta, Gulpease, Oborneva …).
The CEFR judgement comes from a language model and is an estimate, not an exam result. The text is not stored.
Limits: 20 to 3000 words.
Price: CHF 0.04 per call (first 100 calls per day free).
Example: {"text":"Ich wohne in Bern. Ich habe einen Hund. Er heisst Max.","language":"de"} → cefr "A1".
Call it
RESTcurl -X POST https://api.tausendwerk.xyz/v1/text-level \
-H "Content-Type: application/json" \
-d '{"text":"Ich wohne in Bern. Ich habe einen Hund. Er heisst Max.","language":"de"}'MCP tool nametext_levelAfter the free 100 calls per day, add a key: Authorization: Bearer tw_live_…. Pricing
Try it
Runs against the live API with the free allowance.
Input schema JSON Schema
{
"type": "object",
"additionalProperties": false,
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 30000
},
"language": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"nl",
"pt",
"ru",
"th",
"zh",
"ja"
],
"description": "Text language. Omit to detect."
}
},
"examples": [
{
"text": "Ich wohne in Bern. Ich habe einen Hund. Er heisst Max.",
"language": "de"
}
]
}