GermanExam.pro
Server Details
Grades German C1 exam writing (TestDaF, DSH, Goethe C1, telc C1) against the official rubrics.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool targets a clearly distinct action: text_bewerten starts an evaluation, bewertung_abholen collects its result, and pruefungsraster_nachschlagen looks up rubric reference data. Descriptions explicitly cross-reference each other (e.g. 'Not for evaluating a text (use text_bewerten)'), eliminating overlap. The async submit/fetch pair is clearly delineated by the job_id contract.
All three names follow a consistent German snake_case noun_verb pattern (bewertung_abholen, pruefungsraster_nachschlagen, text_bewerten), placing the object first and the action second. No mixing of conventions, camelCase, or verb styles.
Three tools is on the thin side but well-matched to a narrow domain, and each earns its place: reference lookup, submission, and result retrieval. The two-step async pattern legitimately requires both text_bewerten and bewertung_abholen, so nothing feels redundant.
The surface covers the full core workflow: consulting rubrics, submitting a text, and collecting the verdict via job_id. Minor gaps exist (e.g. no way to list past evaluations or cancel a running job), but these are non-essential for the stated purpose.
Available Tools
3 toolsbewertung_abholenBewertung abholenARead-onlyIdempotentInspect
Use this to collect the result of an evaluation that was started with text_bewerten, using its job_id. Returns status "running" (not finished yet), "done" (with the verdict, shown as a card) or an error status. Requires the user to be signed in; only the user's own evaluations can be collected.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id returned by text_bewerten. |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobId | No | |
| labels | No | |
| status | Yes | |
| infoUrl | No | |
| message | Yes | |
| verdict | No | |
| infoLabel | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive/non-open-world behavior. The description adds useful context beyond that: the possible return statuses (running, done, error), that done includes a verdict shown as a card, and the authentication requirement. It does not contradict the annotations, but it could go further on error handling or polling intervals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, followed by return statuses and prerequisites. Every sentence earns its place: the first routes the agent, the second explains outcomes, the third states access constraints. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter polling tool with a full output schema and rich annotations, the description covers the remaining gaps: workflow relationship, auth requirements, and status meanings. Return values are already in the output schema, so the description need not explain them further. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, and the sole parameter (job_id) is already documented there as the ID returned by text_bewerten. The description repeats this same information without adding syntax, format, or validation details beyond the schema. With high schema coverage and no new meaning, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (collect the result of an evaluation) and ties it directly to the sibling tool that creates it (text_bewerten), using job_id. This distinguishes it clearly from text_bewerten, which starts an evaluation, and from pruefungsraster_nachschlagen, which is unrelated. An agent can tell exactly what this tool does and how it relates to the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the precise condition for use: collecting a result that was started with text_bewerten and using its job_id. It also names the prerequisite (signed-in user, own evaluations only) but does not explicitly state when not to use the tool or discuss polling behavior. The context is clear, though exclusions are left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pruefungsraster_nachschlagenPrüfungsraster nachschlagenARead-onlyIdempotentInspect
Use this when the user wants to know how the writing section of a German C1 exam is assessed: the criteria with their weights, the level or grade scale, the passing rule and the expected text length for TestDaF, DSH, Goethe-Zertifikat C1 or telc Deutsch C1 Hochschule. Read-only reference data from the published exam rubrics; no sign-in needed. Not for evaluating a text (use text_bewerten) and not for other languages or exams.
| Name | Required | Description | Default |
|---|---|---|---|
| exam | Yes | Which exam: testdaf, dsh, goethe_c1 or telc_c1 (telc Deutsch C1 Hochschule). |
Output Schema
| Name | Required | Description |
|---|---|---|
| reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds non-obvious context the annotations lack: the data is published rubric reference material and no sign-in is needed, which tells the agent there is no auth prerequisite. It does not discuss caching or versioning of the rubrics, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the trigger, then the payload, then the exclusions. No sentence is redundant and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained; the description instead specifies what the response contains (weights, grade scale, passing rule, text length), which is the right level of detail. For a one-parameter, read-only lookup with full annotations, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single enum parameter is already documented, so the baseline would be 3. The description adds value by expanding the enum codes into recognizable exam names (TestDaF, DSH, Goethe-Zertifikat C1, telc Deutsch C1 Hochschule), reducing the chance of picking the wrong code.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (look up the writing-section assessment rubric) and enumerates exactly what is returned: criteria with weights, level/grade scale, passing rule and expected text length. It also names the four supported exams, so the agent can distinguish it from any generic exam tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use this when the user wants to know how the writing section of a German C1 exam is assessed') and closes with two exclusions, routing text evaluation to text_bewerten and ruling out other languages/exams. Both the when and the when-not are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_bewertenText bewerten lassenAInspect
Use this when the user wants a German text they wrote themselves (about 50 to 900 words) evaluated the way an examiner would, for the writing section of TestDaF, DSH, Goethe-Zertifikat C1 or telc Deutsch C1 Hochschule: level or grade, level per criterion, marked passages and improvements. Requires the user to be signed in. Starts the evaluation and returns a job_id immediately; the verdict is collected with bewertung_abholen. Send only the user's own text. Not for: translations, grammar questions, exam tasks, phrase lists, texts the user did not write, or other languages.
| Name | Required | Description | Default |
|---|---|---|---|
| exam | Yes | The exam the text is for: testdaf, dsh, goethe_c1 or telc_c1. Ask the user if unclear. | |
| part | No | Only for goethe_c1: 1 = discussion post for an internet forum, 2 = (semi-)formal e-mail. | |
| task | No | Optional: the exam task the text answers, verbatim, if the user has it. | |
| text | Yes | The German text exactly as the user wrote it (their own writing, at least about 50 words). Only the text itself — no chat history, no instructions. | |
| is_revision | No | true if this is a revised version of a text the user already had evaluated; false or omitted for a new text. | |
| feedback_language | No | Language of the feedback: the language the user is writing to you in (de, en, ar, tr, ru, zh, fa). Default de. |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobId | No | |
| labels | No | |
| status | Yes | |
| infoUrl | No | |
| message | Yes | |
| verdict | No | |
| infoLabel | No | |
| retryAfterSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond annotations: it requires the user to be signed in, is asynchronous ('returns a job_id immediately', verdict collected via bewertung_abholen), and constrains input to the user's own text. These are exactly the operational facts the non-destructive/readOnly=false annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense block that is well ordered: usage condition with scope, required auth, async/job_id behavior and retrieval tool, then the exclusion list. Every sentence carries new information and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need no explanation, and the description still covers the async job flow, auth prerequisite, input constraints and the negative cases. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the exam enum, part, task, is_revision and feedback_language are already documented. The description still adds meaning the schema lacks, notably the ~50–900 word constraint on 'text' (the schema only bounds characters) and the 'only the user's own text' restriction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (evaluate a self-written German text the way an examiner would) plus the exact exam family (TestDaF, DSH, Goethe C1, telc C1) and the outputs (level/grade, per-criterion level, marked passages, improvements). Easily distinguishes it from bewertung_abholen (collects the verdict) and pruefungsraster_nachschlagen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when the user wants a German text they wrote themselves... evaluated'), explicit word range, and an explicit negative list ('Not for: translations, grammar questions, exam tasks, phrase lists, texts the user did not write, or other languages'). It also names the follow-up sibling bewertung_abholen for retrieving the verdict.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
bewertung_abholen - First observed
pruefungsraster_nachschlagen - First observed
text_bewerten
Related MCP Connectors
Score academic and professional writing against published criteria with three reference models.
Generate tailored quality criteria and scoring guides from your task descriptions. Refine objectiv…
Grade essays, check resumes, and ask typed yes/no, choice and rubric questions, powered by Jev.
Scores text for substance, depth, and clarity in under 25ms.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceAnalyzes text and files for formulaic AI writing patterns, returning a 0-100 score, band label, specific violations with context, and concrete revision advice. Runs entirely locally with rule-based heuristics, requiring no LLM judge or API calls.-
- AlicenseNot gradedqualityBmaintenanceEnables automated agents and writers to check Norwegian and English prose before sending, returning concrete style findings, revision hints, and verdicts instead of authorship claims, with a no-judgment band, positive quality checks, a private local mode, and phrase-bank memory.MIT
- AlicenseAqualityAmaintenanceBilingual (EN/ES) AI-writing detection that shows the evidence instead of a percentage: named tells with line and column, hidden-character inspection, and citation cross-checking against a document's own bibliography. Seven of its nine tools run entirely locally and never touch the network.1027MIT
- AlicenseAqualityBmaintenanceL1-aware grammar, style, translation & tone tools with 70 local rules. Zero API keys needed.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.