turbopress
Server Details
Connect Claude, ChatGPT or any MCP client to your turbopress hosting account. Ask in plain language how your website is doing, how much disk space is left, which invoices are open or when a domain expires. The answers come straight from your customer account, without logging into the panel.
Beyond answering questions, the server can make changes for you: create mailboxes, renew SSL certificates and more. Your AI client asks for confirmation before any change, and you can revoke access at any ti
- Status
- Healthy
- Uptime
- 99.6% over 30 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 106 tools
Individual descriptions go to great lengths to distinguish tools (e.g. get_performance_score vs get_performance_findings vs get_performance_alerts, get_security_status vs get_wordpress_hardening), but the sheer volume of near-parallel read tools (get_website_report, diagnose_website, get_wordpress_status, get_wordpress_overview, get_dns_records vs get_dns_security, get_webspace_usage vs get_storage_breakdown) creates real selection risk. The two parallel redirect mechanisms (add_domain/remove_added_domain alias vs redirect_domain/remove_domain_redirect) are genuinely hard to tell apart at a glance.
Predominantly verb_noun snake_case (create_email_account, delete_dns_record, get_wordpress_sites), with a few systematic exceptions like the deploy_* family and noun-prefixed helpers (start_bulk_wordpress_update). A handful of combined get/set tools (set_site_meta, set_contact_form) deviate slightly but remain readable.
106 tools is far beyond any comfortable agent-facing surface, even for a broad hosting panel. The domain sprawls across DNS, mail, DB, FTP, WordPress, static deploys, billing and support, so many of these tools will rarely coexist in one task — yet the agent must still sift through all of them.
Coverage of the hosting lifecycle is unusually thorough: DNS CRUD, mail accounts/aliases/forwarding/autoreply/spam, databases, FTP, cronjobs, SSL, WordPress lifecycle (install, update, backup, restore, hardening, integrity, staging), static deploys and support/billing. Known gaps are explicitly acknowledged (no listing of protected directories, no DNS TTL change, no email quota edit), which agents can work around but which leave a few dead ends.
Available Tools
106 toolsactivate_turbometricsturbometrics aktivierenAInspect
Aktiviert turbometrics (kostenlose Performance-Überwachung für turbopress-Kunden) für eine Domain. Beim ersten Mal wird dabei ein Konto bei turbometrics.io mit der Kundenadresse angelegt; besteht es schon, bleibt es unverändert — die Antwort sagt, welcher Fall eintrat. Wird ein Konto NEU angelegt, verschickt turbometrics eine Willkommens-Mail mit einem Link zum Festlegen des Passworts, 60 Minuten gültig (bestätigt am 21.09.2026 aus dem turbometrics-Quelltext: die Mail geht nur innerhalb des created-Zweigs raus). Bestand das Konto schon, geht KEINE Mail raus — kündige dann auch keine an. Die Antwort selbst nennt die Mail nicht, nur created/exists; richte dich danach. Danach laufen automatische Scans, deren Ergebnisse get_performance_score und get_performance_findings liefern.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses idempotent semantics (existing account untouched), the side effect of creating an account at turbometrics.io, the conditional welcome email with a 60-minute password link, and the fact that no email is sent on the exists path. It even warns that the response does not mention the email, which is exactly the kind of behavioural detail annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) 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?
Front-loaded with what the tool does and the created/exists branching, and every sentence carries behavioural information. It is somewhat long and repeats the email/created-exists point twice, plus an interjected provenance note, but there is little genuine padding.
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?
With no output schema, the description does the right thing by naming the created/exists response values and by pointing to the tools that surface scan results. It stops short of describing exact response fields or scan timing, but that information is available through the named sibling tools.
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?
Only one parameter and schema description coverage is 100%, so the schema already carries the domain semantics including the 'example.de' format hint. The description adds nothing about the domain argument beyond what the schema states, so the baseline 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?
Specific verb + resource ('Aktiviert turbometrics ... für eine Domain') with the scope (per-domain, for turbopress customers) stated up front. It is clearly distinguishable from the sibling read tools get_performance_score/get_performance_findings and from start_performance_scan, which the description implies is made redundant by the automatic scans.
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?
Explains the two operating conditions (first activation creates the account, subsequent calls leave it unchanged) and routes the agent to the right follow-up tools (get_performance_score, get_performance_findings). It does not explicitly state when NOT to use it versus start_performance_scan, so there is a small gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dns_recordDNS-Eintrag hinzufügenADestructiveInspect
Legt einen neuen DNS-Record auf einer Domain an (Typen A, AAAA, CNAME, TXT, MX, SRV, CAA). Für SRV-Records (z. B. SIP, XMPP) stehen statt host und value die eigenen Felder dienst, protokoll, prioritaet, gewicht, port und ziel (host und value entfallen); für CAA-Records (welche Zertifizierungsstelle Zertifikate ausstellen darf) host, art und wert (value entfällt). Für MX-Records ist "priority" zwingend erforderlich (z. B. 10) — Plesk lehnt MX ohne Priorität ab. TXT-Records für SPF, DMARC und DKIM sind ausdrücklich vorgesehen; der Wert darf bis zu 2048 Zeichen lang sein, ein DKIM-Schlüssel passt also vollständig hinein. Ein fehlerhafter Record kann Mail-Zustellung oder Erreichbarkeit der Website beeinträchtigen — bitte Angaben vor der Bestätigung prüfen.
| Name | Required | Description | Default |
|---|---|---|---|
| art | No | Nur CAA: "issue" erlaubt einer Zertifizierungsstelle Zertifikate, "issuewild" Wildcard-Zertifikate, "iodef" nennt eine Meldeadresse | |
| host | No | NUR der Name VOR der Domain, ohne den Domainnamen — das Hosting-System hängt die Zone selbst an und prüft nicht, ob sie schon dasteht. Gültig: "www", "_dmarc", "selector1._domainkey", "autodiscover", oder "@" für die Domain selbst. Microsoft 365, Google Workspace und Cloudflare geben DKIM- und DMARC-Hosts dagegen als VOLLSTÄNDIGEN Namen heraus ("selector1._domainkey.example.com", "_dmarc.example.com"), weil das der Name ist, der später abgefragt wird — daraus hier nur den Teil vor der Domain übernehmen: aus "selector1._domainkey.example.com" wird "selector1._domainkey", der Domainname allein ("example.com") wird "@". Wird der Domainname trotzdem mitgeschickt, schneidet der Server ihn ab und die Antwort sagt ausdrücklich, welcher Name entstanden ist; ohne dieses Abschneiden entstünde "selector1._domainkey.example.com.example.com" — ein Eintrag, der als Erfolg gemeldet wird, aber nie abgefragt wird und die Mailauthentifizierung stillschweigend kaputt lässt. Dem Kunden deshalb immer den Namen nennen, der laut Antwort tatsächlich eingetragen wurde, und nicht den, den er genannt hat. Höchstens 255 Zeichen, gezählt nach dem Abschneiden. Bei CAA der Name, für den die Regel gilt ("@" für die Domain selbst); bei SRV nicht angeben (der Name ergibt sich aus dienst und protokoll) | |
| port | No | Nur SRV: Port, ganze Zahl 1–65535, als Zahl und nicht als Text (z. B. 5060) | |
| type | Yes | Record-Typ | |
| wert | No | Nur CAA: bei issue/issuewild die Domain der Zertifizierungsstelle (z. B. "letsencrypt.org") oder ";" für "niemand"; bei iodef eine Adresse mit "mailto:" oder "https://" | |
| ziel | No | Nur SRV: Servername, auf dem der Dienst läuft, z. B. "sip.example.com"; der abschließende Punkt wird ergänzt. Ein einzelner Punkt "." heißt: Dienst wird nicht angeboten | |
| value | No | Zielwert des Records: eine IP-Adresse (A/AAAA), ein Hostname (CNAME/MX) oder der vollständige Textwert (TXT, z. B. "v=spf1 include:_spf.google.com ~all" oder ein DKIM-Wert "v=DKIM1; k=rsa; p=…"). Höchstens 2048 Zeichen. DKIM-Werte unverändert so übernehmen, wie der Anbieter sie ausgibt — auch in der geteilten Schreibweise mit Anführungszeichen ("v=DKIM1; k=rsa; " "p=…"), die wird beim Eintragen automatisch zu einem Wert zusammengefügt. Die 2048 Zeichen zählen für den zusammengefügten Wert. Bei SRV und CAA nicht angeben | |
| dienst | No | Nur SRV: der Dienst mit führendem Unterstrich, z. B. "_sip", "_xmpp-client", "_autodiscover" | |
| domain | Yes | Die Domain, z. B. example.com | |
| gewicht | No | Nur SRV: Gewicht, ganze Zahl 0–65535, verteilt die Last bei gleicher Priorität (z. B. 5) | |
| priority | No | Priorität/Gewichtung (nur relevant, meist erforderlich bei MX-Records, z. B. 10) | |
| protokoll | No | Nur SRV: das Protokoll | |
| prioritaet | No | Nur SRV: Priorität, ganze Zahl 0–65535, kleinere Zahl wird zuerst versucht (z. B. 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true; the description adds real consequence context the annotations cannot convey — that a faulty record can break mail delivery or website reachability — and the DNS-specific pitfall that the server truncates an appended domain suffix, plus the instruction to report the name actually stored rather than the one supplied. It omits propagation/TTL timing and what happens on a duplicate/conflicting record, which keeps it below 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?
Front-loaded with purpose and the type list, then type-specific rules, then a risk warning — a sensible order with no filler. It is dense and slightly redundant where it re-enumerates the SRV field names that the schema already labels.
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 13-parameter tool with type-dependent field subsets and no output schema, the description covers the branching logic, the MX gotcha, TXT length, and the host-suffix trap. Missing pieces are the lifecycle questions — propagation timing, behavior on duplicate records, and that a bad entry is fixed via update/delete.
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 per-field meaning is already documented; the description largely restates the type-conditional field matrix. It does add one thing the schema lacks: MX priority is stated as mandatory because Plesk rejects MX without it (the schema only says 'meist erforderlich'), plus the 2048-character TXT limit rationale.
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 ("Legt einen neuen DNS-Record auf einer Domain an") and enumerates the supported record types, which immediately separates it from update_dns_record and delete_dns_record in the sibling list. Scope is unambiguous 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?
Gives clear conditional guidance: which field set to use for SRV, CAA and MX, and that TXT is the intended path for SPF/DMARC/DKIM. It never names the alternative tools (e.g. update_dns_record for changing an existing record, get_dns_records to inspect first), so it stops short of explicit when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_domainSubdomain oder Weiterleitung anlegenAInspect
Legt für das Hostingpaket (hauptdomain = die Domain des Pakets) eine Subdomain oder eine Weiterleitung von einer Domain bei einem anderen Anbieter an. Drei Arten (art): "alias" = Weiterleitung einer Domain, die der Kunde bei einem ANDEREN Anbieter registriert hat (z. B. IONOS oder Strato): sie leitet dauerhaft (301) auf die Hauptdomain des Pakets weiter; das SSL-Zertifikat wird nach dem Anlegen ausgestellt, sobald alle autoritativen Nameserver der jeweiligen Domain den Namen liefern (bei einer Subdomain die der Hauptdomain, bei einem Alias die der Domain selbst, nicht die des Pakets). Meldet die Antwort zertifikat_folgt (oder nicht ausdrücklich, dass das Zertifikat ausgestellt ist), ist es noch nicht da: es wird automatisch nachgeholt (Wiederholung alle paar Minuten bis 48 Stunden nach dem Anlegen), und aktion "pruefen" auf den angelegten Namen stellt auch ein noch offenes Zertifikat aus (im Panel: Knopf "Zertifikat ausstellen"; das gilt auch für Subdomains). Die Weiterleitung wird erst aktiviert, wenn die A-/AAAA-Einträge für @ und www auf den Server des Pakets zeigen: bis dahin ist der Zustand "wartet_dns", und die Antwort nennt die Einträge, die der Kunde beim DNS-Anbieter setzen muss (und AAAA-Einträge, die er entfernen muss). Es gibt keinen Hintergrundjob für wartende Domains: Hat der Kunde das DNS geändert, muss mit aktion "pruefen" erneut aufgerufen werden, erst dann wird die Weiterleitung angelegt und das Zertifikat ausgestellt. Wartende Domains verfallen nach 30 Tagen (der Eintrag wird entfernt, die Domain lässt sich danach neu hinzufügen); "pruefen" verlängert die Frist nicht. Zeigt die neue Domain richtig, ein anderer Alias des Pakets aber nicht, nennt die Antwort diesen Alias: der Zustand bleibt "wartet_dns", bis der Kunde ihn in Ordnung bringt oder entfernt. "sub_website" = Subdomain mit eigener Website: ihre Dateien liegen im Ordner neben httpdocs (der Ordner heißt immer wie die Subdomain und lässt sich nicht frei wählen); bis zum Hochladen steht dort eine Platzhalterseite, der Zugriff läuft über FTP/SFTP/SSH des Hauptzugangs. Nur wenn die App einen eigenen Ordner ausliefert (z. B. public bei Laravel/Symfony oder dist bei Vite), gibt es den optionalen Parameter unterordner (relativ unter , z. B. public); aktion "pfad" ändert ihn später (der alte Ordner bleibt bestehen). Das Zertifikat der Subdomain folgt automatisch, sobald sie überall im DNS angekommen ist (meist innerhalb von 15 Minuten). "sub_weiterleitung" = Subdomain, die per 301 auf eine URL (ziel) weiterleitet. Domains, die dem Kunden bei turbopress gehören, legt dieses Werkzeug nicht an: für sie gibt es im Panel unter "Weiterleitungen" → "Weiterleitung anlegen" den Weg "Eine deiner turbopress-Domains" (im Chat: redirect_domain; Domains ohne eigenes Paket werden dabei dem Paket zugeordnet); die Hauptdomain eines anderen Pakets desselben Kunden wird mit dz_eigenes_paket abgelehnt; Domains anderer werden abgelehnt. Im Panel-Chat braucht jeder Aufruf den Bestätigungsklick des Kunden (dann wurde noch nichts ausgeführt). Höchstens 10 Hinzufügungen pro Tag. Die Antwort (Zustand, DNS-Einträge, Zugang) wörtlich weitergeben; nur dann Erfolg melden, wenn sie ihn meldet. Entfernen: remove_added_domain.
| Name | Required | Description | Default |
|---|---|---|---|
| art | No | Pflicht bei hinzufuegen: alias (Weiterleitung einer Domain von einem anderen Anbieter, 301 auf die Hauptdomain), sub_website (Subdomain mit eigener Website) oder sub_weiterleitung (Subdomain, 301 auf eine URL) | |
| pfad | No | Veraltet, nur noch Alt-Name für unterordner: gilt nur mit der Vorsilbe <fqdn>/ (z. B. shop.example.de/public wird zu unterordner public); jeden anderen Ordnerpfad gibt es nicht mehr. Besser unterordner verwenden | |
| ziel | No | Pflicht bei sub_weiterleitung: die URL, auf die per 301 weitergeleitet wird | |
| label | No | Bei Subdomains: nur der Teil vor der Hauptdomain, z. B. "shop" für shop.example.de | |
| aktion | No | Standard hinzufuegen. pruefen = DNS einer wartenden Alias-Domain erneut prüfen und/oder ein offenes Zertifikat einer angelegten Domain oder Subdomain nachholen (domain angeben, bei einer Subdomain der volle Name); pfad = Unterordner einer sub_website ändern (domain = vollständiger Name der Subdomain + unterordner, leer = der Ordner der Subdomain selbst) | |
| domain | No | Bei alias und pruefen: die weiterzuleitende Domain bei einem anderen Anbieter, z. B. andere.de (bei pruefen auch der volle Name einer hinzugefügten Subdomain). Bei aktion pfad: der vollständige Name der Subdomain, z. B. shop.example.de | |
| hauptdomain | Yes | Die Domain des Hostingpakets, z. B. example.de | |
| unterordner | No | Optional bei sub_website, nur wenn die App einen eigenen Ordner ausliefert: öffentlicher Unterordner relativ unter dem Ordner <fqdn> der Subdomain, z. B. public oder dist (leer = der Ordner <fqdn> selbst). Pflichtangabe bei aktion pfad (leer erlaubt) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and idempotentHint=false, but the description adds substantial behavioural context: a mandatory confirmation click in the panel chat, a 10-additions-per-day limit, no background job for waiting domains, a 30-day expiry, and the exact DNS/SSL waiting semantics. It also tells the agent to pass the response verbatim and only report success when the response does.
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?
The purpose is front-loaded in the first sentence, and the length is justified by the tool's state machine and DNS/SSL edge cases. The body is a dense single block rather than structured sections, and some certificate/DNS points are repeated, so it is not maximally concise.
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?
There is no output schema, and the description compensates by explaining expected response states (wartet_dns, zertifikat_folgt), DNS entries to set or remove, what aktion 'pruefen' does, and how the agent should handle the returned response. For an 8-parameter, multi-mode mutation tool, this covers what an agent needs in order to call and interpret it correctly.
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 description coverage is 100%, so the schema already documents all eight parameters. The description still adds useful semantics: it explains the meaning of the three art values in operational terms, clarifies that pfad is deprecated in favour of unterordner, and describes when aktion 'pruefen' or 'pfad' 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 first sentence names a specific verb and resource (legt ... eine Subdomain oder eine Weiterleitung ... an) and immediately scopes it to the hosting package. It distinguishes the three creation modes and explicitly names sibling alternatives (redirect_domain, remove_added_domain), so an agent can separate it from neighbouring tools without opening a 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?
It states when to use the tool and clear exclusions: turbopress-owned domains go to redirect_domain, another package's main domain is rejected with dz_eigenes_paket, and foreign domains are rejected. It also gives the when-to-use condition for aktion 'pruefen' and the removal path via remove_added_domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_wordpress_security_measureWordPress-Härtungsmaßnahme anwendenADestructiveInspect
Wendet GENAU EINE WP-Toolkit-Härtungsmaßnahme auf eine WordPress-Installation an (siehe get_wordpress_hardening für die verfügbaren Kennungen). Manche Maßnahmen haben Nebeneffekte, die über den Titel hinausgehen — securityKeys beendet alle Sitzungen, adminUsername ersetzt den Anmeldenamen, dbPrefix ändert die Datenbank, secureContent und disableUnusedScripting können Plugins mit eigenen PHP-Skripten in wp-content lahmlegen. Fünf der neunzehn Maßnahmen lassen sich nicht zurücknehmen.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| measure | Yes | Kennung der Maßnahme, z. B. "dbPrefix" — get_wordpress_hardening nennt die verfügbaren Kennungen. | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare a generic destructiveHint=true/openWorldHint=true; the description goes well beyond them by naming concrete consequences for individual measures (securityKeys ends all sessions, adminUsername changes login name, dbPrefix alters the database, secureContent/disableUnusedScripting can break plugins) and flagging that 5 of 19 measures are irreversible.
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?
Front-loaded with purpose, then the sibling pointer, then high-value side-effect warnings. Every sentence earns its place and the dense enumeration of dangerous measures is the most useful content.
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 destructive, single-measure mutation tool with no output schema, the description supplies the discovery path, the irreversibility count, and per-measure side effects. Nothing an agent needs to decide whether and how to call it 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 each parameter is already documented, including the get_wordpress_hardening reference for 'measure'. The description reinforces the 'exactly one measure' constraint but adds no syntax, format, or example detail beyond what the schema states.
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 (anwenden), resource (Härtungsmaßnahme) and scope constraint (GENAU EINE) on a WordPress installation. It also points to get_wordpress_hardening as the source of valid identifiers, letting an agent separate it from the discovery-sibling without opening any 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?
The 'GENAU EINE' constraint plus the pointer to get_wordpress_hardening gives clear operating context, and the irreversibility warning shapes when it is safe to call. However it does not explicitly name revert_wordpress_security_measure as the undo path or state when-not-to-use, so it stops short of full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_domain_availabilityDomain-Verfügbarkeit prüfenARead-onlyInspect
Prüft, ob eine beliebige Domain zur Registrierung verfügbar ist (WHOIS-Lookup, nicht auf eigene Domains beschränkt). Nur ein eindeutiger WHOIS-Status wird als "verfügbar" oder "bereits registriert" gemeldet; liefert WHOIS keinen eindeutigen Status, sagt die Antwort das ausdrücklich statt "registriert" zu vermuten.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die zu prüfende Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuine behavioral context beyond that: the lookup is WHOIS-based, and it explicitly refuses to report an ambiguous status as 'registered' — an honesty/edge-case behavior an agent could not infer from structured fields.
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?
Purpose is front-loaded in the first clause and there is no filler. It is one long, slightly run-on sentence, but every clause adds a distinct fact (scope, method, ambiguity handling), so it is dense rather than bloated.
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 single-parameter read-only lookup with no output schema, the description supplies the essentials: method, scope, and the three possible outcomes (verfügbar / bereits registriert / nicht eindeutig). It never describes the response shape or how errors are surfaced, which keeps it just short of complete.
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?
There is a single parameter with 100% schema description coverage ('Die zu prüfende Domain, z. B. example.de'), so the schema already carries the semantics. The description adds the WHOIS scope but nothing about the domain string format or whether it accepts subdomains/IDN, so the baseline 3 is appropriate.
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 (checks whether a domain is available for registration) and immediately scopes it with 'not limited to your own domains', which cleanly distinguishes it from the sibling get_domains that operates on the account's own domains. An agent can route to it 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?
The parenthetical 'nicht auf eigene Domains beschränkt' gives a clear condition for choosing this over the account-scoped domain tools. It stops short of naming the nearest alternative (suggest_domain_alternatives) or stating when-not to use it, so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_wordpress_integrityWordPress-Kerndateien prüfenARead-onlyInspect
Vergleicht eine WordPress-Installation mit den offiziellen Prüfsummen und meldet drei Arten von Funden getrennt: veränderte Dateien (vorhanden, Inhalt weicht ab), fehlende Kerndateien (entfernt) und zusätzliche Dateien (gehören nicht zu WordPress — die klassische Stelle für eine Hintertür). Nennt die betroffenen Dateien je Art. Geprüft wird nur der WordPress-Kern, nicht Plugins, Themes oder Uploads. Ein Fund ist nicht automatisch ein Einbruch: Auch ein von Hand verändertes WordPress fällt auf.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Nur nötig bei mehreren Installationen auf der Domain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only profile (readOnlyHint=true, destructiveHint=false), yet the description adds substantial context beyond that: the three finding classes and what each means, including noting extra files as 'die klassische Stelle für eine Hintertür'. It also tempers interpretation, which is genuinely useful for an agent reporting results.
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?
Front-loaded with the core action, then the finding taxonomy, then the scope boundary, then the interpretation caveat. Every sentence carries information an agent needs; nothing is padding.
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?
No output schema exists, but the description compensates by describing the return categories and that affected files are named per category. Combined with the scope exclusions and the interpretation caveat, an agent has enough to call it and interpret results correctly.
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 description coverage is 100%, so both domain and site_url are already documented in the schema, including the multi-installation caveat. The description adds no parameter-level detail beyond that, so 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?
Specific verb+resource: it compares a WordPress installation against official checksums and enumerates the three finding categories it reports. It explicitly bounds the scope ('nur der WordPress-Kern, nicht Plugins, Themes oder Uploads'), which cleanly separates it from siblings like get_outdated_plugins or get_wordpress_status.
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?
Usage context is clear: it explains when the core-only check applies and warns that a finding is not automatically an intrusion ('Auch ein von Hand verändertes WordPress fällt auf'). It does not, however, explicitly name an alternative sibling (e.g. scan_wordpress_vulnerabilities) or state when NOT to run it, which keeps it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_wordpress_databaseWordPress-Datenbank aufräumenADestructiveInspect
Räumt die Datenbank einer WordPress-Installation auf: löscht ALLE Beitrags-Revisionen (den gesamten Versionsverlauf der Beiträge und Seiten, nicht nur alte) und abgelaufene Transients (zwischengespeicherte Daten) und nur auf ausdrücklichen Wunsch (kommentare: true) auch Spam- und Papierkorb-Kommentare. Nur Autosaves der letzten 7 Tage bleiben stehen. Erstellt davor immer automatisch ein Sicherheits-Backup und weist es nach — lässt es sich nicht erstellen oder nicht nachweisen, wird NICHTS geändert; Gelöschtes lässt sich nur über dieses Backup zurückholen. Steht vorher fest, dass es nichts aufzuräumen gibt (oder ist die Installation eine Multisite oder nicht lesbar), endet das Tool ohne Backup und ohne Änderung mit einer entsprechenden Meldung. NICHT zum Nachsehen aufrufen: Gibt es etwas zu tun, wird sofort gesichert und gelöscht. Nur aufrufen, wenn der Kunde das Aufräumen ausdrücklich will. Die angezeigte Größe der Datenbank sinkt nicht immer sofort, weil sie frei gewordenen Platz selbst wieder nutzt; es wird kein OPTIMIZE ausgeführt. Kommentare nur löschen, wenn der Kunde es ausdrücklich will. Gibt es auf der Domain mehrere WordPress-Installationen, ist site_url nötig. Der Lauf ist zeitlich begrenzt: bei einer sehr großen Datenbank wird nur ein Teil aufgeräumt und das Tool meldet "teilweise" — dann dem Kunden sagen, dass das Aufräumen noch einmal gestartet werden kann. Pro Tag sind höchstens 5 Läufe möglich.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen auf derselben Domain: welche gemeint ist | |
| kommentare | No | true = zusätzlich alle Spam- und Papierkorb-Kommentare endgültig löschen. Standard: false. Nur auf ausdrücklichen Wunsch des Kunden. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and idempotent=false, and the description goes far beyond them: an automatic verified backup precedes every change, deletion is aborted if no backup can be created or proven, deleted data is recoverable only via that backup, autosaves of the last 7 days are preserved, database size may not shrink immediately because no OPTIMIZE runs, and there is a hard rate limit of 5 runs per day.
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?
Front-loaded with the destructive scope and the backup guarantee before the finer caveats, and nearly every sentence carries operational weight. It is dense and slightly long for a single tool, with some repetition around the explicit-consent requirement for comments.
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 destructive, non-idempotent, open-world tool with no output schema, the description covers everything an agent needs: backup precondition, abort paths, multisite and no-op behaviour, partial-run outcome plus the instruction to tell the customer to rerun, and the daily run limit.
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 baseline is 3, but the description adds real semantics: site_url is required specifically when multiple WordPress installations share a domain, and kommentare must only be set on explicit customer request. That meaning goes beyond the schema text, though domain itself gets no further elaboration.
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 (Datenbank aufräumen) and enumerates exactly what is removed: ALL post revisions including the full version history, expired transients, and spam/trash comments only on request. It is clearly distinguishable from siblings such as clear_wordpress_cache, create_wordpress_backup, or delete_wordpress_backup.
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?
Explicitly says NOT to call it for inspection ("NICHT zum Nachsehen aufrufen") because anything to clean is secured and deleted immediately, and requires the customer's explicit wish to run. It also names exclusion conditions (Multisite, unreadable install, nothing to clean) where the tool exits without action, and separately gates the comment deletion on explicit customer consent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_wordpress_cacheWordPress-Cache leerenAInspect
Leert den Cache der WordPress-Installation einer Domain über den echten WP-CLI-Aufruf "wp litespeed-purge" (live gemessen, wirkt nachweislich). Liest vorher auf der Installation selbst, ob ein Cache-Plugin aktiv ist, und kennt drei Ausgänge: geleert, nachweislich kein Cache aktiv (dann war nichts zu leeren), und nicht feststellbar. Der dritte Ausgang ist KEINE Entwarnung: Er heißt, dass der Zustand nicht gelesen werden konnte — meist weil WordPress dort gerade nicht startet —, und ein aktiver Cache kann weiter alte Inhalte ausliefern. Inhalte gehen beim Leeren nicht verloren; die nächsten Aufrufe sind kurz langsamer. Erster Schritt, wenn Änderungen an der Website nicht sichtbar werden. Optional kann mit scope auch der Objekt-Cache (Valkey) mitgeleert werden; meldet die Antwort verified=false ("nicht belegt"), ist das keine Erfolgsmeldung.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Was geleert wird: "seite" = Seiten-Cache (LiteSpeed), "objekt" = Objekt-Cache (Valkey), "beides" = beide. Standard: seite. | |
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, destructive=false, openWorld=true; the description adds substantial context beyond that: three distinct outcome states, that "nicht feststellbar" is NOT an all-clear (WordPress may not be starting, stale content may still be served), that content is not lost, that subsequent requests are briefly slower, and that a verified=false response is not a success signal. This is rich, non-obvious behavioral disclosure.
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?
The core action is front-loaded, but the description is dense and meandering, with several em-dash asides ("live gemessen, wirkt nachweislich", "dann war nichts zu leeren") that dilute the message. Much of the content is valuable, but it could be structured more tightly.
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?
No output schema exists, yet the description compensates by describing the three return outcomes and the semantics of a verified=false response, which is exactly what an agent needs for a mutation tool. Combined with the annotation safety profile, nothing critical 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 description coverage is 100%, so the enum values for scope and the meaning of site_url are already documented in the schema. The description adds that scope can also purge the object cache (Valkey), but this is largely duplicative of the enum descriptions, so 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 names a specific verb and resource (clears the WordPress cache of a domain, via the real WP-CLI call "wp litespeed-purge") and states the scope of what is affected. An agent can distinguish it from sibling tools like start_performance_scan or diagnose_website 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?
"Erster Schritt, wenn Änderungen an der Website nicht sichtbar werden" gives an explicit triggering condition, and the optional scope usage is clarified. However, no alternative sibling tool is named for the case where cache clearing is not the right move (e.g. diagnosing the site instead), so guidance is clear but not fully comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_support_ticketSupport-Ticket schließenBInspect
Schließt ein bestehendes eigenes Support-Ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes | Die in get_support_tickets angezeigte interne Ticket-ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation profile is partly covered. The description adds nothing beyond that: it does not say whether closing is reversible, whether it blocks further replies, or whether confirmation is required. Because destructiveHint=false could be read as "nothing is lost," some clarifying text about the effect of closing would be valuable.
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?
One short sentence, front-loaded with verb and resource, with no filler. Its brevity is efficient rather than padded, though it borders on under-specification for a mutating tool.
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 state-changing ticket operation with no output schema and no annotation coverage of reversibility or side effects, the description leaves the agent without the information needed to call it responsibly. It says what closes, but nothing about consequences or the resulting state.
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?
Single parameter with 100% schema description coverage ("die in get_support_tickets angezeigte interne Ticket-ID"), so the schema already carries the semantics. The description adds nothing about the identifier and the baseline for fully documented single-param schemas is 3.
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?
Names a specific verb ("Schließt") and resource ("Support-Ticket") with a scope qualifier ("eigenes" = own, "bestehendes" = existing) that arguably signals the counterpart to create_support_ticket. An agent can tell it is a state-ending operation rather than a read or a reply. It does not, however, explicitly name the sibling tools (get_support_tickets, reply_to_ticket) it must be distinguished from.
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?
"Bestehendes eigenes" implies a precondition: the ticket must already exist and belong to the caller, which is more than pure restatement. There is still no explicit when-to-use/when-not guidance and no reference to alternatives such as replying instead of closing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cronjobCronjob anlegenAInspect
Richtet einen wiederkehrenden Cronjob für eine Domain ein (Plesk "Geplante Aufgaben"). Die Regeln für die Befehlszeile stehen vollständig bei "command"; lies sie, bevor du dem Kunden einen Befehl vorschlägst — alles davon wird serverseitig geprüft und sonst mit Angabe der verletzten Regel abgewiesen. Bei type="exec" und type="php" wird zusätzlich nachgesehen, ob die Datei an der angegebenen Stelle überhaupt existiert. Fehlt sie, wird der Cronjob trotzdem angelegt (man darf ihn vor dem Hochladen einrichten) — die Antwort trägt dann aber eine Warnung, die du dem Kunden ungekürzt weitergeben musst, statt nur "eingerichtet" zu melden. Konnte nicht nachgesehen werden, sagt die Antwort genau das; behaupte dann weder, die Datei sei da, noch, sie fehle.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | exec (Standard) = Skript im Domainverzeichnis, "command" ist die vollständige Befehlszeile samt Argumenten. php = PHP-Skript; Plesk ruft PHP mit der für die Domain eingestellten Version selbst auf, "command" enthält deshalb nur den Skriptpfad (Argumente dahinter trennt der Server ab) und niemals ein "php" oder "/usr/bin/php" davor. http = "command" ist eine https-URL auf die eigene Domain. | |
| domain | Yes | Die Domain, z. B. example.de | |
| command | Yes | Bei type="exec"/"php" eine Befehlszeile, bei type="http" eine URL. ERSTES WORT = der auszuführende Pfad, alles dahinter = Argumente. Dieser Pfad muss unterhalb des Verzeichnisses dieser Domain liegen — relativ dazu ("httpdocs/wp-cron.php") oder absolut ("/var/www/vhosts/example.de/httpdocs/wp-cron.php"), beides ist erlaubt; ".." wird aufgelöst und darf nicht hinausführen. Ein Programm aus dem System als erstes Wort ist damit ausgeschlossen: "/usr/bin/php httpdocs/wp-cron.php" wird abgewiesen, obwohl das Skript dahinter stimmt — der Interpreter gehört nicht davor, bei type="php" ruft Plesk ihn selbst auf. Gesperrt sind ausserdem die Zeichen ; & | ` $ ( ) < > und Zeilenumbrüche, weil die Crontab-Zeile in einer Shell läuft; eine Ausgabeumleitung (">> /dev/null 2>&1") ist deshalb nicht möglich und gehört in das Skript selbst. Gültig ist z. B. bei type="php" "httpdocs/wp-cron.php", bei type="exec" "httpdocs/backup.sh --voll --leise" und bei type="http" "https://example.de/cron.php" (nur https, nur die eigene Domain mit oder ohne "www.", kein "@"). | |
| schedule | Yes | Zeitplan im CRON-Format, genau fünf Felder (Minute Stunde Tag Monat Wochentag), je nur Ziffern und * / , - — z. B. "*/5 * * * *" oder "0 22 * * 1-5". Abgekürzte Namen ("MON", "jan") und Sonderformen ("@reboot", "@daily") werden abgewiesen. | |
| description | No | Beschreibung, die in Plesk angezeigt wird |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: server-side validation of every command rule with the violated rule reported back, an extra file-existence check for type='exec'/'php', creation succeeding anyway with a warning, and a distinct indeterminate result. This tells the agent how to interpret and relay the outcome, which the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) cannot.
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?
Front-loaded with purpose, then the command rules and the two response cases (missing file warning, indeterminate check). Dense but every clause carries an instruction the agent must act on; slightly long with some overlap around the command-validation point.
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?
With no output schema, the description compensates by describing the response shapes an agent must handle: a warning to pass on verbatim and an 'could not be checked' message. Combined with 100% schema coverage, nothing needed to call or interpret the tool 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 baseline is 3, but the description adds semantics the schema does not carry: that the file-existence check applies specifically to type='exec' and type='php', and that 'command' rules are authoritative and enforced. It does not restate schedule/domain syntax, which the schema already covers.
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 ('Richtet einen wiederkehrenden Cronjob für eine Domain ein') and maps it to the Plesk concept ('Geplante Aufgaben'), so the agent knows exactly what side effect to expect. It is trivially distinguishable from get_cronjobs and delete_cronjob by the creation verb.
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?
Gives clear operational context: read the 'command' rules before proposing a command, and it is legal to create a cronjob before the target file is uploaded. It does not name sibling tools or state explicit exclusions, so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_databaseDatenbank anlegenBInspect
Legt eine neue MySQL-Datenbank auf einer Domain an.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name der neuen Datenbank (nur Buchstaben, Zahlen, Unterstriche) | |
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds the engine (MySQL) and the domain scoping, but says nothing about name collisions, whether the operation is idempotent, or permission requirements beyond what annotations imply.
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 front-loaded sentence with no filler. It is efficient, though arguably terse given the tool mutates infrastructure.
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 low-complexity create tool with two fully documented required params and no output schema, the essentials are present. However, the relationship to database-user creation and any failure behavior on duplicate names is left unaddressed.
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 description coverage is 100%: the schema documents both 'name' (allowed characters) and 'domain' (example format). The description adds no syntax or format detail beyond the schema, so the baseline 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?
States a specific verb+resource+scope: creating a new MySQL database tied to a domain. Clear enough to distinguish from delete_database and get_databases, though it does not explicitly contrast itself with create_database_user or other create_* siblings.
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?
No when-to-use or when-not-to-use guidance is given. Nothing tells the agent how this relates to create_database_user (whether a user must be created separately), nor any prerequisite such as the domain already existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_database_userDatenbank-Benutzer anlegenAInspect
Legt einen neuen Datenbank-User an und verknüpft ihn mit einer bestehenden Datenbank. Das Passwort wird sicher zufällig generiert und in der Antwort angezeigt.
| Name | Required | Description | Default |
|---|---|---|---|
| login | Yes | Gewünschter Login-Name des neuen Users. Erlaubt sind nur Buchstaben, Ziffern und Unterstrich, höchstens 64 Zeichen — das ist aber lockerer als MySQL selbst (dort maximal 32 Zeichen): Ein Login mit 33–64 Zeichen besteht diese Prüfung, scheitert dann aber bei Plesk, und die Antwort lautet dafür nur "plesk_unavailable" statt einer erkennbaren Ablehnung. Praktisch deshalb auf 32 Zeichen begrenzen. gültig: "wp_user", "kunde1", "wp_user_2026". abgewiesen: "max.mustermann" (Punkt), "shop-db" (Bindestrich), "müller" (Umlaut). | |
| domain | Yes | Die Domain, z. B. example.com | |
| database | Yes | Name der bestehenden Datenbank |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description adds genuinely useful behavior beyond that: the password is securely randomly generated and returned in the response, and the user is bound to an existing database. It stops short of stating permission requirements or idempotency/duplicate-user behavior.
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?
Two tightly written sentences with no filler, and the core action is front-loaded ahead of the password-generation behavior. Nothing needs trimming.
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 3-param mutation tool with no output schema, the description supplies the key missing return-value context (the generated password appears in the response) and the DB prerequisite. Only permission/error-handling detail is absent, which is a minor gap given the rich schema.
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 description coverage is 100% and the schema itself is exceptionally detailed (login constraints, valid/invalid examples, the 32-char Plesk pitfall). The description adds no parameter-level meaning beyond the schema, so 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?
States a precise verb+resource: creates a new database user and links it to an existing database. This clearly distinguishes it from siblings like create_database and delete_database_user without ambiguity.
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?
Usage is only implied: 'verknüpft ihn mit einer bestehenden Datenbank' signals that an existing database is a prerequisite. There is no explicit when-to-use/when-not guidance or reference to alternatives, leaving the agent to infer the workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_email_accountE-Mail-Postfach anlegenAInspect
Legt ein neues E-Mail-Postfach auf einer Domain an. Das Passwort wird sicher zufällig generiert und in der Antwort angezeigt — bitte dem Kunden mitteilen, es wird nicht erneut angezeigt. Ob die Adresse schon vergeben ist, wird NICHT vorab geprüft: Gibt es sie bereits, wird die Anlage abgelehnt und das vorhandene Postfach bleibt unberührt — das ist keine Störung. get_email_accounts zeigt den Bestand.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com | |
| local_part | Yes | Lokaler Teil der Adresse (vor dem @), z. B. "info" für info@example.com. Erlaubt sind nur Buchstaben, Ziffern, Punkt, Bindestrich, Unterstrich, höchstens 64 Zeichen — keine Umlaute. gültig: "info", "max.mustermann", "Info_Neu". abgewiesen: "büro", "müller" (Umlaute), "info+shop" (Plus-Zeichen). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a non-read-only, non-destructive, open-world write. The description adds what those hints cannot: the password is generated server-side and displayed exactly once (an irrecoverable side effect), and a duplicate-address rejection leaves the existing mailbox untouched and is explicitly not an error. That is precisely the behavior an agent must know before calling.
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?
Front-loads the action, then immediately surfaces the two highest-risk facts (one-time password, duplicate rejection is normal), and closes by routing to the inspection sibling. No filler sentences.
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?
There is no output schema, so the description must – and does – explain the key return value: the generated password delivered once in the response. Combined with the failure-mode explanation, an agent has everything needed to call and interpret this tool.
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 description coverage is 100%: both 'domain' and 'local_part' are documented with format rules and valid/rejected examples, so the schema already carries the parameter semantics. The description adds no parameter-level information, making the baseline 3 appropriate.
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 ('Legt ein neues E-Mail-Postfach auf einer Domain an') and names the sibling that inspects state instead ('get_email_accounts zeigt den Bestand'), making it distinguishable from delete_email_account and get_email_accounts at a glance.
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?
Gives clear operational context: no pre-check of existence, the failure mode if the address is taken, and where to look at existing mailboxes. It does not explicitly contrast with alternatives like set_email_alias or setup_email_provider, so 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ftp_accountFTP-Zugang anlegenAInspect
Legt einen zusätzlichen FTP-Zugang für eine Domain an. Das Passwort wird serverseitig erzeugt. Ohne Angabe von "home" bekommt der Zugang das Verzeichnis dieser Domain (z. B. "/httpdocs"); nur falls sich das nicht feststellen lässt, wird "/" gesetzt. Achtung: Ein ausdrückliches Startverzeichnis "/" gibt Zugriff auf alle Dateien des Hostings, nicht nur auf diese Domain. Welches Verzeichnis wirklich gesetzt wurde, steht in der Antwort — nur das darf dem Kunden genannt werden.
| Name | Required | Description | Default |
|---|---|---|---|
| home | No | Startverzeichnis relativ zur Subscription, mit führendem Schrägstrich, insgesamt höchstens 120 Zeichen. Jedes Namensteil nur aus Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein "..", kein doppelter und kein abschließender Schrägstrich. Weglassen heisst: das Verzeichnis der genannten Domain (Standard, z. B. "/httpdocs"). Ein ausdrückliches "/" allein ist hier GÜLTIG und bedeutet das gesamte Abonnement (anders als bei create_protected_directory, wo "/" allein abgelehnt wird) — wird als solches übernommen. gültig: "/httpdocs", "/httpdocs/kunde", "/". abgewiesen: "/httpdocs/kunden portal" (Leerzeichen), "/httpdocs/müller" (Umlaut), "/httpdocs/kunde+1", "httpdocs" (ohne führenden Schrägstrich), "/httpdocs/" (Schrägstrich am Ende). | |
| login | Yes | Login des neuen FTP-Zugangs, 3–32 Zeichen, Kleinbuchstaben/Ziffern/-/_ , beginnend mit einem Buchstaben | |
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive, open-world mutation; the description adds materially: the password is generated server-side (the agent must not ask for one), the default-directory resolution and its '/' fallback, the security consequence of an explicit '/', and the instruction to report only the directory actually returned. These are behavioral facts an agent cannot derive from the annotations.
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?
Purpose is front-loaded, followed by default behavior, then the safety warning, then the response-handling rule. Four sentences, each earning its place; only the parenthetical example '/httpdocs' is mildly redundant with 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?
With no output schema, the description compensates by explaining that the effective directory is only trustworthy from the response. Schema already covers parameters fully. Minor gaps remain: no statement about required permissions, login uniqueness, or what happens on invalid input.
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 baseline is 3, but the description adds real meaning beyond it: it discloses that no password parameter exists because the server generates it, and it reinforces the default/explicit-'/' semantics of 'home' with a security rationale the schema only states mechanically.
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: 'Legt einen zusätzlichen FTP-Zugang für eine Domain an.' The 'zusätzlichen' qualifier and the FTP/domain framing make it unmistakable among siblings (no other create_* tool targets FTP accounts; create_email_account and create_protected_directory are clearly different resources).
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?
Gives clear conditional guidance: omitting 'home' yields the domain's directory, and it flags the dangerous case of explicitly passing '/'. It also supplies a crucial downstream rule ('nur das darf dem Kunden genannt werden'). However, it never names an alternative tool or a when-not-to-use condition (e.g., use reset_ftp_password for existing accounts), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_protected_directoryVerzeichnis mit Passwort schützenAInspect
Schützt ein Verzeichnis einer Domain mit einer Passwortabfrage (HTTP-Basic). Der Bereich ist danach ohne Anmeldung nicht mehr erreichbar, auch nicht für Suchmaschinen. Das Passwort wird serverseitig erzeugt. Die Zeichenregeln stehen bei den Parametern und werden serverseitig geprüft; lies sie, bevor du dem Kunden Werte vorschlägst — Umlaute sind nur im Titel erlaubt, in "directory" und "username" nicht. WordPress-Systemordner (wp-admin, wp-includes, wp-content) lassen sich nicht schützen.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Text, den der Browser im Anmeldefenster zeigt, 1–60 Zeichen. Umlaute sind erlaubt (anders als bei "directory" und "username"), Satzzeichen dagegen nicht: erlaubt sind nur Buchstaben, Umlaute und ß, Ziffern, Leerzeichen, Punkt, Bindestrich, Unterstrich. Kein Komma, keine Klammern, kein Doppelpunkt, kein Ausrufezeichen, kein "&", kein "/" — und keine anderen Akzentbuchstaben wie "é". gültig: "Interner Bereich", "Änderungen intern", "Geschützter Bereich" (der Standard). abgewiesen: "Interner Bereich, bitte anmelden", "Kundenbereich (intern)", "Bereich: intern", "Bitte anmelden!", "Intern & Extern", "Café intern". | |
| domain | Yes | Die Domain, z. B. example.de | |
| username | Yes | Benutzername für die Anmeldung, 3–32 Zeichen. Das erste Zeichen ist ein Buchstabe oder eine Ziffer, danach Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein "@". gültig: "team", "team-01", "max.mustermann", "1team". abgewiesen: "müller", "_team", "ab", "max@firma". | |
| directory | Yes | Zu schützendes Verzeichnis, mit führendem Schrägstrich, je Namensteil höchstens 60 Zeichen. Erlaubt sind nur Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein Schrägstrich am Ende. Namensteile "." und ".." werden abgelehnt (kein "/intern/./x", kein "/intern/.."), und ".." ist auch irgendwo im Namen verboten (kein "/a..b"). Auch "/" allein geht nicht; ein ganzer Auftritt lässt sich so nicht schützen. WordPress-Systemordner (wp-admin, wp-includes, wp-content) werden in JEDEM Namensteil abgelehnt, ohne Beachtung der Groß-/Kleinschreibung, auch bei einer Installation im Unterordner (z. B. "/blog/wp-admin"): Der Passwortschutz von Plesk gilt für den ganzen Ordner und lässt sich nicht für einzelne Dateien aufheben, er würde sonst die Website oder die Anmeldung kaputt machen (z. B. admin-ajax.php, das Besucher für Warenkorb und Formulare brauchen). gültig: "/intern", "/intern/kunden", "/Intern-2024". abgewiesen: "/geschützt", "/mein ordner", "intern", "/intern/", "/", "/wp-admin", "/blog/wp-admin", "/intern/./x", "/a..b". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) the description discloses that the password is generated server-side, that validation happens server-side, and — importantly — why WordPress folders are rejected: Plesk's protection covers the whole folder and would break the site or its login (e.g. admin-ajax.php). This causal explanation of a behavioral constraint is exactly the kind of context the annotations cannot carry.
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?
The core purpose and the strongest constraint (WordPress folders) are front-loaded in the first and last sentences, with the reading directive in between. It is a dense paragraph rather than a list, and the umlaut reminder partially duplicates the schema, but no sentence is wasted.
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 mutation tool with no output schema, the description covers effect, validation, and hard exclusions well. The notable gap is what the call returns — since the password is generated server-side, the agent is not told whether the response contains it, which matters for relaying credentials to the customer.
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 description coverage is 100%, so the baseline is 3; the description earns one step more by summarizing the cross-field rule (umlauts permitted in `title` but not in `directory` or `username`) and by directing the agent to the per-parameter rules before suggesting values. Most individual constraints still live in the schema, not the description.
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 names a concrete verb and resource — protecting a domain directory with HTTP Basic authentication — and spells out the effect (directory unreachable without login, hidden from search engines). It is unambiguous what the tool does, though it never names the sibling `remove_protected_directory` or any other alternative to contrast with.
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 gives clear operative context: the password is generated server-side, and WordPress system folders (wp-admin, wp-includes, wp-content) cannot be protected, which is a concrete exclusion an agent must know before calling. It also instructs the agent to read character rules before proposing values to a customer. It stops short of naming which sibling tool to use for the reverse operation or for other security measures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ssl_certificateSSL-Zertifikat ausstellenADestructiveInspect
Stellt ein neues Let's-Encrypt-SSL-Zertifikat für eine Domain aus (über sslit) und ersetzt damit das aktuelle Zertifikat. Sichert standardmäßig die Domain selbst, www und webmail; mail. nur auf Wunsch (include_mail), da das einen bereits existierenden mail.-DNS-Record voraussetzt und sonst mit einer konkreten Fehlermeldung fehlschlägt. Let's Encrypt erlaubt nur 5 identische Zertifikate pro Woche. Dagegen schützen zwei Prüfungen, die beide ihre Grenzen nennen: (1) gezählt werden die Ausstellungen, die in den letzten 7 Tagen ÜBER TURBOPRESS für diese Domain liefen (eigenes Prüfprotokoll) — ab 5 wird abgelehnt; Ausstellungen über das Plesk-Panel oder einen anderen Anbieter zählt diese Zahl nicht mit, sie ist also eine Untergrenze, keine Bilanz des Kontingents. (2) eine Frischeprüfung am live ausgelieferten Zertifikat: Stammt es von Let's Encrypt und ist es weniger als 7 Tage alt, wird ebenfalls abgelehnt — das ist ein Indiz, keine Zählung, und es sagt nur, WAS ausgeliefert wird, nicht wer es ausgestellt hat (ein vorgeschaltetes CDN/Proxy kann ein fremdes sein). force=true übergeht beides. Konnte eine der beiden Prüfungen nicht greifen (TLS-Handshake fehlgeschlagen oder Protokoll unlesbar), fällt der Schutz NICHT stillschweigend aus: Die Antwort sagt dann ausdrücklich, dass er nur unvollständig gegriffen hat. Antwortet mit dem live bestätigten Ergebnis (Aussteller, abgedeckte Namen, Gültigkeit) — oder ausdrücklich als unbestätigt, wenn die Live-Verifikation nicht möglich war.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Den Schutz gegen zu häufiges Ausstellen derselben Domain übergehen (Standard: false) — nur setzen, wenn wirklich nötig, z. B. um SANs zu ändern | |
| domain | Yes | Die Domain, z. B. example.com | |
| include_www | No | www.<domain> mit absichern (Standard: true) | |
| include_mail | No | mail.<domain> mit absichern — braucht einen existierenden DNS-Record für mail.<domain> (Standard: false) | |
| include_webmail | No | webmail.<domain> mit absichern (Standard: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations (which only flag destructive/openWorld). It discloses the Let's Encrypt 5-per-week limit, the two internal guard checks with their precise limitations (counting only Turbopress-issued certs = a lower bound; freshness check = an indicator, not a count), the force bypass, the explicit non-silent failure when a check cannot run, and the confirmed vs unconfirmed response semantics.
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?
The core action and its replacement behavior are front-loaded, and the extended guard/limit detail is relevant to correct invocation. It is nonetheless dense and long for a single tool, with some over-explanation of the two checks that could be trimmed.
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?
With no output schema, the description carries the return-value burden and does so: it states the live-confirmed result (issuer, covered names, validity) and the explicit unconfirmed alternative. Failure modes and the force escape hatch are all covered.
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 description coverage is 100%, so every parameter (domain, include_www/webmail, include_mail, force) is already documented with defaults in the schema. The description restates the include_mail DNS prerequisite and that force overrides both checks, adding only marginal meaning beyond the schema.
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 ('Stellt ein neues Let's-Encrypt-SSL-Zertifikat für eine Domain aus') and clarifies the side effect ('ersetzt damit das aktuelle Zertifikat'). This cleanly separates it from read-only siblings like get_ssl_status and from set_contact_form/fix_https_redirect.
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?
Gives clear conditions for the risky options: include_mail only 'auf Wunsch' and only when an existing mail.<domain> DNS record is present, and force only 'wenn wirklich nötig'. It does not explicitly route an agent to get_ssl_status first, so it stops short of full when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_staging_siteStaging-Kopie erstellenAInspect
Erstellt eine Testkopie einer WordPress-Installation auf einer neuen Subdomain (z. B. staging.example.de) — legt die Subdomain bei Bedarf automatisch an (bei Namenskollision automatisch durchnummeriert: staging, staging2, staging3, ...) und stößt den Klon über WP Toolkit an. Bei mehreren WordPress-Installationen auf derselben Domain muss site_url angegeben werden. WP Toolkit arbeitet den Klon im Hintergrund ab und meldet nur die ANNAHME zurück: Die Antwort sagt deshalb "angestoßen", nicht "angelegt", und die genannte Staging-Adresse ist zusammengesetzt, nicht abgerufen — weder Erreichbarkeit noch SSL-Zertifikat sind geprüft. Dem Kunden entsprechend sagen, dass er die Adresse in ein paar Minuten selbst aufrufen soll. Schlägt der Klon fehl, bleibt die bereits angelegte Subdomain absichtlich bestehen (sie wird nicht automatisch entfernt) — auch das gehört in die Antwort an den Kunden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain mit der zu kopierenden WordPress-Installation, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen: welche gemeint ist | |
| subdomain_name | No | Gewünschter Name der Staging-Subdomain (Standard: "staging"). Erlaubt sind nur Buchstaben (Gross-/Kleinschreibung wird nicht unterschieden), Ziffern und Bindestrich — kein Punkt, kein Unterstrich. gültig: "staging", "test1", "test-kopie", "Staging" (Grossbuchstaben werden angenommen, nicht abgewiesen). abgewiesen: "test.example.de" (Punkt), "staging_kopie" (Unterstrich). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the clone runs asynchronously and only acceptance is returned, the advertised staging address is composed rather than fetched, SSL/reachability are unverified, collisions are auto-numbered, and a failed clone deliberately leaves the subdomain behind. Annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) do not convey any of this.
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?
Front-loaded with the core action, then layers operational caveats in a logical order. It is dense and long, but nearly every clause carries distinct operational information; a tighter split between the tool summary and customer-facing guidance would improve it.
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?
With no output schema, the description carries the return-value burden and does so explicitly, warning that the response means 'triggered' not 'created' and instructing how to relay this to the customer. Nothing needed to call or interpret the tool 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 baseline is 3, but the description adds value the schema lacks: the collision auto-numbering behavior for subdomain_name and the precise condition that triggers the site_url requirement. Naming-character rules are already fully in the schema, so it does not need to repeat them.
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: creates a test copy of a WordPress installation on a new subdomain, and names the mechanism (WP Toolkit clone). This is instantly distinguishable from sibling tools like create_wordpress_backup or install_wordpress_plugin.
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?
Gives a clear conditional: site_url must be supplied when multiple WordPress installations share a domain. It also implies the favorable case (single install) by omission. It does not explicitly route to a sibling alternative, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_support_ticketSupport-Ticket eröffnenAInspect
Eröffnet ein neues Support-Ticket. Auf maximal 5 Tickets pro Tag begrenzt, um versehentliche Mehrfach-Erstellung zu vermeiden.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Nachrichtentext | |
| subject | Yes | Betreff des Tickets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the write/open-world profile is covered. The description goes beyond that by disclosing a concrete rate limit (5 tickets per day) and its intent, which is genuinely useful behavioral context an agent cannot derive from annotations or schema.
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?
Two short sentences: the purpose first, then the constraint. Every clause earns its place and nothing is padded or 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?
For a two-parameter creation tool with no output schema and annotations already covering safety semantics, the description supplies what is needed: the action and the daily cap. It omits only minor details such as authentication requirements or what is returned after creation (ticket ID), which is a small gap.
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 description coverage is 100% with only two required string parameters (subject, message), so the schema already carries the parameter documentation. The description adds no format, length, or content guidance beyond that, which matches the baseline for full schema coverage.
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 (eröffnet/creates) and resource (Support-Ticket), so the agent immediately knows this is the creation path for tickets. It does not explicitly differentiate itself from siblings like reply_to_ticket or close_support_ticket, but the verb+resource pairing makes the distinction inferable.
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?
The description implies when the tool is used (creating a new ticket) and adds an operational constraint of max 5 tickets/day, which tells the agent when a call may fail. However, it never names alternatives such as reply_to_ticket for existing threads or get_support_tickets for reading, so no explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_wordpress_backupWordPress-Backup erstellenAInspect
Erstellt ein neues On-Demand-WordPress-Backup (über WP Toolkit) — z. B. als Absicherung vor einem riskanten Plugin-Update. Rein additiv, kein Risiko für bestehende Daten. Bei mehreren WordPress-Installationen auf derselben Domain (Subdomains) muss site_url angegeben werden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen: welche gemeint ist (siehe Fehlermeldung mit den verfügbaren Werten) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and openWorldHint=true; the description reinforces this with 'Rein additiv, kein Risiko für bestehende Daten', which usefully clarifies existing data is untouched. However it says nothing about the backup being asynchronous or how/when to confirm completion (get_backup_status and get_wordpress_backups exist as siblings), which is the key behavioral fact for a create-backup tool.
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?
One dense sentence with the action front-loaded, then the motivating scenario, then the conditional requirement. Efficient, though the em-dash clause stacks three ideas into a single sentence.
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 mutation tool with no output schema and only 2 well-documented params, the description covers the action, safety and the site_url edge case. It omits that the backup runs asynchronously and how to verify or restore it, which are relevant for an agent completing the task end-to-end.
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 description coverage is 100%, so the baseline is 3. The description only lightly extends the schema by noting the multi-install case relates to subdomains on the same domain, adding marginal nuance over the existing site_url description.
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 (erstellt), resource (On-Demand-WordPress-Backup) and mechanism (über WP Toolkit), which cleanly separates it from get_wordpress_backups, delete_wordpress_backup and restore_wordpress_backup. An agent can route to this tool without opening its 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?
Gives a concrete when-to-use scenario ('als Absicherung vor einem riskanten Plugin-Update') and a precondition for site_url (multiple WP installs on the same domain). It does not name sibling alternatives such as get_backup_status for verifying completion, so it stops short of full when-to-use/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cronjobCronjob löschenADestructiveInspect
Löscht EINE geplante Aufgabe (Cronjob) einer Domain — der Weg zurück zu create_cronjob, etwa für eine falsch angelegte Aufgabe. Ändern kann dieses Werkzeug nichts: Dafür die alte Aufgabe löschen und mit create_cronjob eine neue anlegen. Die Kennung (cronjob_id) muss aus get_cronjobs stammen und wird serverseitig gegen die Aufgabenliste genau dieser Domain geprüft; eine geratene oder aus einer älteren Antwort übernommene Kennung wird abgewiesen, bevor irgendetwas gelöscht wird. Die Kennungen sind nicht stabil — vor dem Löschen get_cronjobs frisch abrufen und dem Kunden Befehl, Zeitplan und Beschreibung der Aufgabe nennen, die er löschen will, nicht nur die Zahl. Eine gelöschte Aufgabe lässt sich über dieses Werkzeug nicht wiederherstellen, nur neu anlegen; läuft an ihr etwas Wichtiges (wp-cron hält bei WordPress geplante Beiträge, Backups und Newsletter am Laufen), hört das sofort auf. Die Antwort sagt ausdrücklich, ob die Aufgabe nach dem Löschen wirklich aus der Liste verschwunden ist; ist die Liste danach nicht abrufbar, meldet sie das als ungeprüft statt als Erfolg.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| cronjob_id | Yes | Kennung der geplanten Aufgabe, genau wie von get_cronjobs geliefert — keine geratene Zahl, und keine aus einer früheren Antwort |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is known. The description nonetheless adds substantive context: server-side validation of the ID against that domain's list before anything is deleted, IDs are not stable, running tasks (wp-cron posts/backups/newsletters) stop immediately, and the response explicitly reports whether the task actually disappeared or is unverified. That is genuine value beyond the annotations.
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?
Front-loaded action statement followed by prerequisites, irreversibility and response semantics; each sentence carries information. It is somewhat long and repeats the delete-then-create advice, and the aside about telling the customer the command/schedule/description is UX guidance rather than tool-selection content.
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 destructive two-parameter tool with no output schema, the description covers prerequisites (fresh ID from get_cronjobs), domain-scoped validation, irreversibility, side effects on running jobs, and how the response distinguishes verified deletion from unverified state. Nothing essential to correct invocation 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 baseline is 3, and the schema already warns against guessed or stale cronjob_ids. The description still adds meaning the schema lacks: the ID is validated server-side against the task list of this specific domain, and identifiers are not stable so a fresh fetch is required before deletion.
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 with scope: 'Löscht EINE geplante Aufgabe (Cronjob) einer Domain'. It explicitly contrasts itself with the sibling create_cronjob (re-creation path) and rules out in-place modification, so an agent can distinguish it from its siblings without opening any 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?
Explicit when-to-use ('der Weg zurück zu create_cronjob, etwa für eine falsch angelegte Aufgabe') and when-not ('Ändern kann dieses Werkzeug nichts: dafür löschen und neu anlegen'). It also states the prerequisite that cronjob_id must originate from a fresh get_cronjobs call, naming the exact alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_databaseDatenbank löschenADestructiveInspect
LÖSCHT eine MySQL-Datenbank samt Inhalt — der Weg zurück zu create_database und die folgenschwerste Aktion dieses Servers. DAS IST IRREVERSIBLER DATENVERLUST: Alles, was darin gespeichert ist, ist danach endgültig weg. Es gibt keinen Papierkorb, keine Rückgängig-Funktion und keinen Weg zurück — auch nicht über den turbopress-Support; create_database bringt nur eine LEERE Datenbank zurück. Bevor du das aufrufst: Sieh mit get_databases nach, wie groß die Datenbank ist und ob eine WordPress-Installation sie benutzt (dann liegen Beiträge, Seiten, Bestellungen und Benutzerkonten darin und die Website zeigt danach einen Datenbankfehler), nenne dem Kunden beides, und frage ausdrücklich nach einer eigenen Sicherung. Der Name wird serverseitig gegen die Datenbanken genau dieses Abonnements geprüft und dann über die Kennung aus dieser Liste gelöscht — eine geratene oder fremde Angabe erreicht das Hosting-System nicht. Die Antwort sagt ausdrücklich, ob die Datenbank danach wirklich aus der Liste verschwunden ist; war die Liste danach nicht abrufbar, meldet sie das als ungeprüft statt als Erfolg. War die Liste schon vorher nicht abrufbar, wird nichts gelöscht — das heißt dann NICHT, dass es die Datenbank nicht gibt.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| database | Yes | Name der Datenbank, genau wie von get_databases geliefert. Vor dem Löschen frisch abrufen, nie einen Namen aus einer früheren Antwort oder aus dem Gedächtnis des Kunden verwenden. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds far more: no trash, no undo, no recovery even via turbopress support, create_database only restores an EMPTY database, server-side name validation scoped to this subscription, and honest reporting semantics (explicit success confirmation vs. 'unverified' when the list could not be re-read).
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?
Long and dense, but front-loaded with the single most important fact (irreversible data loss) before procedure and response semantics. For a destructive irreversible operation the length is defensible; only minor tightening is possible.
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?
No output schema exists, and the description compensates by describing the response contract (explicit confirmation of removal, or 'unverified' if the list could not be re-read). Combined with preconditions and irreversibility warnings, an agent has everything needed to call this safely.
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 baseline is 3, but the description adds real semantics beyond the schema: the database name is validated server-side against this subscription's databases and deletion happens via the identifier from that list, so a guessed or foreign name never reaches the hosting system.
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?
Opens with a precise verb+resource: 'LÖSCHT eine MySQL-Datenbank samt Inhalt'. It explicitly positions itself against the sibling create_database ('der Weg zurück zu create_database') and distinguishes itself from other delete_* siblings by naming the exact object (database, not user/DNS/email).
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?
Gives explicit preconditions: run get_databases first to size the database and check for a WordPress installation, tell the customer both facts, and explicitly ask about their own backup. It also explains what NOT to infer (a previously unavailable list means nothing was deleted).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_database_userDatenbank-Benutzer löschenADestructiveInspect
Löscht einen Datenbank-Benutzer — der Weg zurück zu create_database_user. Hier gehen keine Daten verloren, sondern der ZUGANG zu ihnen: Jede Anwendung, die sich mit diesen Zugangsdaten anmeldet — eine WordPress-Installation, ein Shop, ein eigenes Skript —, kommt danach nicht mehr an die Daten und zeigt einen Datenbankfehler. Frage den Kunden vorher, ob noch etwas mit diesem Benutzer arbeitet; in WordPress steht er in der wp-config.php. Das Passwort kommt nicht zurück: Ein gleichnamiger neuer Benutzer bekommt ein neues, die alten Zugangsdaten leben nicht wieder auf. WAS NICHT GEMESSEN IST und deshalb auch nicht zugesichert werden darf: was mit der DATENBANK geschieht, an der der Benutzer hängt. Dass das Hosting-System für Datenbank und Benutzer getrennte Löschwege führt, legt nahe, dass die Datenbank bleibt — nachgemessen ist es nicht. Sage es genau so, statt es zu behaupten. Der Login wird serverseitig gegen die Datenbank-Benutzer genau dieses Abonnements geprüft und dann über die Kennung aus dieser Liste gelöscht; eine geratene oder fremde Angabe erreicht das Hosting-System nicht. War die Liste nicht abrufbar, wird nichts gelöscht — das heißt dann NICHT, dass es den Benutzer nicht gibt.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Login des Datenbank-Benutzers. Rate keinen — frage den Kunden, wenn du ihn nicht sicher kennst. | |
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds substantial context beyond them: no data is lost but access is, dependent apps will throw a database error, the password is not recoverable, a same-named user gets a new password, and — crucially — it discloses what is NOT verified (the database's fate) and forbids over-claiming. It also states the list-not-retrievable failure mode and that it does NOT mean the user is absent.
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?
Front-loaded with the core action and the sibling contrast, then layered with operational caveats. It is long for a 2-param tool and a few clauses (e.g. "Sage es genau so, statt es zu behaupten") are meta-instruction rather than tool semantics, but nearly every sentence carries actionable content.
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?
Complete for a destructive mutation with no output schema: it covers prerequisites, downstream impact, irreversibility of credentials, an explicit uncertainty boundary, and failure-mode interpretation. Nothing an agent needs to call or accurately explain this tool 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 schema already documents both params, so the baseline is 3. The description adds real meaning about the `user` param's resolution: the login is validated server-side against the subscription's own database users, so a guessed or foreign value never reaches the hosting system. That is genuine semantics beyond the schema, though it does not add format details.
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 ("Löscht einen Datenbank-Benutzer") and immediately positions it relative to siblings: it is the reverse of create_database_user, and it explicitly is NOT a delete_database operation (the database presumably stays). An agent can distinguish it from both create_database_user and delete_database without opening a 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?
Explicitly instructs the agent to ask the customer beforehand whether anything still uses this user, and names the concrete place to check in WordPress (wp-config.php). It also names the counterpart tool (create_database_user) and distinguishes the operation from database deletion, so when-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_recordDNS-Eintrag löschenADestructiveInspect
Löscht EINEN DNS-Eintrag einer Domain — der Weg zurück zu add_dns_record, etwa für einen falsch eingetragenen DKIM-, SPF- oder DMARC-Wert. Die Kennung (record_id) muss aus get_dns_records stammen und wird serverseitig gegen die Zone genau dieser Domain geprüft; eine geratene oder aus einer älteren Antwort übernommene Kennung wird abgewiesen, bevor irgendetwas gelöscht wird. Die Kennungen sind nicht stabil: vor dem Löschen get_dns_records frisch abrufen und dem Kunden Typ, Name und Wert des Eintrags nennen, den er löschen will. Ein gelöschter Eintrag lässt sich über dieses Werkzeug nicht wiederherstellen, nur mit add_dns_record neu anlegen — und ein fehlender SPF-, DKIM- oder MX-Eintrag kann Mailzustellung oder Erreichbarkeit der Website sofort beeinträchtigen. Die Antwort sagt ausdrücklich, ob der Eintrag nach dem Löschen wirklich aus der Zone verschwunden ist; ist die Zone danach nicht abrufbar, meldet sie das als ungeprüft statt als Erfolg.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| record_id | Yes | Kennung des Eintrags, genau wie von get_dns_records geliefert — keine geratene Zahl, und keine aus einer früheren Antwort | |
| bestaetigung | No | Nur für geschützte Einträge (MX, SPF, DKIM, DMARC, A/AAAA der Hauptdomain und von www, sowie die Ziele eines MX): der VOLLE Name des Eintrags, genau wie ihn die Fehlermeldung nennt (Feld required_name). Ohne diese Angabe lehnt der Server mit confirmation_required ab und löscht nichts. NS und SOA lassen sich nie löschen. Den Namen nur setzen, nachdem der Kunde das Löschen ausdrücklich bestätigt hat — nie vorsorglich mitschicken. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already flag the tool as destructive, the description adds substantial operational context: server-side validation against the zone of the exact domain, rejection of guessed or stale IDs before any deletion, ID instability requiring a fresh get_dns_records call, irreversibility (only add_dns_record can recreate), and potential immediate impact on mail delivery or website availability. It further describes response semantics, including that an inaccessible zone is reported as unverified rather than success.
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?
The purpose is front-loaded in the first clause, and the remaining sentences each add operational detail without filler. The description is dense and somewhat long, but for a destructive operation with real service-impact warnings this level of detail is justified rather than wasteful.
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?
Given the tool's destructive nature, three parameters, and lack of an output schema, the description covers everything an agent needs: correct identifier sourcing, server-side validation, confirmation requirements, irreversibility, potential service impact, and the meaning of the response including unverified outcomes. No critical pre-invocation information 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 description coverage is 100%, so the schema already documents all three parameters well, making 3 the baseline. The description still adds meaning beyond the schema by explaining that record_id is validated server-side against the zone of that domain and that guessed or stale identifiers are rejected before anything is deleted, plus it reinforces ID instability and the need to fetch fresh values before calling.
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 opens with a precise verb and resource: 'Löscht EINEN DNS-Eintrag einer Domain'. It immediately distinguishes the tool from siblings by naming add_dns_record as the reversal path and get_dns_records as the source of the required identifier. An agent can tell this apart from other delete_* tools and from add_dns_record without opening a 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?
It explicitly states the use case ('der Weg zurück zu add_dns_record, etwa für einen falsch eingetragenen DKIM-, SPF- oder DMARC-Wert') and names the sibling tool to use for recreation. It also provides prerequisites: fetch fresh IDs via get_dns_records, show the customer type/name/value before deleting, and obtain explicit confirmation before sending the bestaetigung field. It even notes that NS and SOA records can never be deleted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_email_accountPostfach löschenADestructiveInspect
LÖSCHT ein E-Mail-Postfach einer Domain UNWIDERRUFLICH samt allen Mails darin. Aliasse und Weiterleitung des Postfachs gehen mit. Es gibt keinen Rückweg und keine Wiederherstellung durch turbopress; ein neu angelegtes Postfach mit demselben Namen (create_email_account) ist LEER. Bevor du das aufrufst: Sieh mit get_email_accounts nach, welche Postfächer es gibt und welche Aliasse und Weiterleitung daran hängen, nenne dem Kunden die Adresse GENAU und frage ausdrücklich nach, z. B. "Soll das Postfach info@example.de mit allen Mails endgültig gelöscht werden?" — und weise auf eine eigene Sicherung der Mails hin (z. B. per Mail-Programm). Rufe das Werkzeug erst nach einem klaren Ja des Kunden auf. Das Postfach wird serverseitig gegen die Postfächer genau dieses Abonnements geprüft; gibt es es nicht, wird nichts gelöscht. War die Postfachliste nicht abrufbar, wird ebenfalls nichts gelöscht — das heißt dann NICHT, dass es das Postfach nicht gibt. Die Antwort belegt das Löschen nur, wenn der Server danach nachgesehen und das Postfach nicht mehr gefunden hat. Meldet sie "Auftrag angenommen, Ergebnis nicht geprüft" oder dass das Postfach noch vorhanden ist, melde es NIE als gelöscht, sondern sieh mit get_email_accounts nach. Kommt statt einer Ausführung ein Vorgang zur Bestätigung (status confirmation_required), wurde NICHTS gelöscht: Der Kunde muss ihn selbst bestätigen.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| local_part | Yes | Nur der lokale Teil des Postfachs (vor dem @), z. B. "info" für info@example.de — NICHT die ganze Adresse. get_email_accounts liefert volle Adressen: den Teil vor dem @ abschneiden. Eine volle Adresse info@<domain> wird nur angenommen, wenn der Teil nach dem @ genau der angegebenen Domain entspricht. Nur Buchstaben, Ziffern, Punkt, Bindestrich, Unterstrich, höchstens 64 Zeichen. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare destructiveHint=true and readOnlyHint=false, the description adds substantial context beyond them: irreversibility, loss of aliases/forwarding, no recovery, server-side validation that nothing is deleted when the mailbox doesn't exist or the list couldn't be retrieved, and how to interpret ambiguous responses. It stops short of being perfect only because the response-interpretation rules, while detailed, are lengthy and partly operational rather than purely descriptive.
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?
The destructive warning is correctly front-loaded and the sentence order follows the decision flow (what it does → consequences → check first → confirm → interpret response). It is long, but for an irreversible operation most sentences earn their place; a few (e.g. the repeated no-deletion scenarios) are slightly redundant.
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?
With no output schema and two parameters fully documented, the description carries the remaining burden excellently — it explains the possible response states (verified deletion, 'accepted but unverified', still present, confirmation_required) and warns never to report success unless the server re-checked. Nothing needed to call and interpret this tool 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% — the schema already explains that domain is the domain and local_part is the part before the @, with format constraints. The description adds the customer-facing example 'info@example.de' but no syntax beyond the schema, so 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 opening sentence states a specific verb and resource — permanently deleting an email mailbox including all its mails, aliases and forwarding. It explicitly contrasts with the sibling create_email_account ('a newly created mailbox with the same name is EMPTY'), so the agent can distinguish it 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?
It gives explicit pre-conditions and routing: first look up mailboxes with get_email_accounts, name the exact address to the customer, ask for an explicit confirmation with a sample phrasing, advise on backups, and only call after a clear 'yes'. This is a complete when-to-use and how-to-proceed protocol.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ftp_accountFTP-Zugang löschenADestructiveInspect
Löscht EINEN zusätzlichen FTP-Zugang einer Domain — der Weg zurück zu create_ftp_account, etwa wenn ein Zugang für einen Dienstleister nicht mehr gebraucht wird. Der Login muss aus get_ftp_accounts stammen und wird serverseitig gegen die Zugangsliste genau dieser Domain geprüft; ein geratener oder fremder Login wird abgewiesen, bevor irgendetwas gelöscht wird. Den HAUPTZUGANG (in get_ftp_accounts als "main_account" ausgewiesen) kann dieses Werkzeug nicht löschen: Er ist zugleich der SSH-Zugang des Hosting-Pakets und gehört fest dazu — eine Anfrage danach wird mit dieser Begründung abgewiesen. Nenne dem Kunden vor dem Löschen den Login UND sein Startverzeichnis (get_ftp_accounts zeigt beides): Ein Zugang mit Startverzeichnis "/" sieht alle Dateien des Hostings, nicht nur die dieser Domain. Ein gelöschter Zugang ist weg, nicht gesperrt — die alten Zugangsdaten funktionieren nicht mehr, und ein gleichnamiger neuer Zugang bekommt ein neues Passwort; das alte lebt nicht wieder auf. Die Antwort sagt ausdrücklich, ob der Zugang danach wirklich aus der Liste verschwunden ist; war die Liste danach nicht abrufbar, meldet sie das als ungeprüft statt als Erfolg. War die Liste schon vorher nicht abrufbar, wird nichts gelöscht — das heißt dann NICHT, dass es den Zugang nicht gibt.
| Name | Required | Description | Default |
|---|---|---|---|
| login | Yes | Login des zu löschenden FTP-Zugangs, genau wie von get_ftp_accounts geliefert — kein geratener Name, und nicht der Hauptzugang | |
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description goes well beyond them: server-side validation rejects guessed/foreign logins before any deletion, deletion is irreversible (old credentials dead, same-named re-creation gets a new password), and the response distinguishes verified deletion from an 'unprüft' outcome when the list could not be re-read.
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?
The purpose is front-loaded in the first clause and every subsequent sentence carries operational content (rejection rules, irreversibility, response semantics). It is a single dense block with no headers or line breaks, which makes it heavier to parse than necessary, but there is no filler.
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?
With no output schema, the description carries the return-value burden and does so: it explains that the response states whether the account actually vanished, that an unreadable post-delete list is reported as unverified rather than success, and that a pre-existing list failure means nothing was deleted. Prerequisites, guard rails, and failure modes are all covered.
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 baseline is 3, but the description adds genuine meaning: the login is validated server-side against exactly this domain's access list, and a rejected login aborts before deletion. The domain parameter itself adds nothing beyond the schema's 'example.de' example.
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 ('Löscht EINEN zusätzlichen FTP-Zugang einer Domain') and immediately differentiates scope from its sibling by naming create_ftp_account as the inverse and ruling out the main account. An agent can distinguish this from reset_ftp_password or delete_email_account without opening any 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?
Explicit when-to-use (a contractor's access is no longer needed), when-not (the 'main_account' marked in get_ftp_accounts, which is also the SSH access), and the required prerequisite that the login come from get_ftp_accounts. It even tells the agent to relay the login and home directory to the customer before deleting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_wordpress_backupWordPress-Backup löschenADestructiveInspect
Löscht ein einzelnes On-Demand-Backup einer WordPress-Installation, um Platz im Backup-Kontingent zu schaffen. Der Dateiname muss aus get_wordpress_backups stammen; ein erfundener Name wird serverseitig abgewiesen. Das gelöschte Backup lässt sich danach nicht mehr zurückspielen. Nach dem Löschen wird die Backup-Liste erneut gelesen und ausdrücklich gesagt, ob genau diese Datei darin verschwunden ist — steht sie weiterhin drin oder ist die Liste nicht abrufbar, meldet die Antwort das als ungeprüft statt als Erfolg. Dem Kunden deshalb immer den Satz aus der Antwort weitergeben, nicht "erledigt".
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| filename | Yes | Dateiname des Backups, genau wie von get_wordpress_backups geliefert | |
| site_url | No | Nur nötig bei mehreren WordPress-Installationen auf der Domain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description goes well beyond them: it discloses irreversibility ('lässt sich danach nicht mehr zurückspielen'), server-side filename validation, a post-delete re-read verification step, and how unverified vs. success outcomes are reported. It even prescribes relaying the response sentence verbatim instead of saying 'erledigt'.
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?
Front-loaded with purpose and scope, then constraints, then the verification contract. Five sentences is longer than typical, but the closing instruction about passing on the response sentence is genuinely actionable rather than filler; only slight tightening would be possible.
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?
With no output schema, the description carries the return-value burden and does so: it explains the post-delete re-read, the 'unverified instead of success' reporting semantics, and what to communicate to the customer. Nothing needed to invoke this destructive tool 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 description coverage is 100%, so the schema already documents all three parameters, including that filename must match get_wordpress_backups output. The description reinforces that constraint but adds no syntax or format detail for domain or site_url, so the baseline 3 is appropriate.
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 (löscht) and a precisely scoped resource ('ein einzelnes On-Demand-Backup einer WordPress-Installation'), plus the intent (Platz im Backup-Kontingent schaffen). An agent can immediately distinguish this from create_wordpress_backup and restore_wordpress_backup without opening any 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?
Gives a clear precondition for use: the filename must originate from get_wordpress_backups, and an invented name is rejected server-side. It also implies the irreversible consequence that selects restore_wordpress_backup as the alternative path, though it never names that sibling explicitly or states when not to delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_wordpress_itemPlugin oder Theme löschenADestructiveInspect
Löscht EIN WordPress-Plugin oder -Theme, das INAKTIV ist (slug, siehe unten). Gelöscht wird ausschließlich, was nachweislich inaktiv ist; der Zustand wird frisch auf der Installation gelesen. IMMER verweigert, auch auf ausdrücklichen Wunsch: das aktive Theme und dessen übergeordnetes Theme (Parent); das letzte installierte Standard-Theme (Twenty …), solange das aktive Theme kein Standard-Theme ist; aktive und netzwerkweit aktive Plugins (erst mit set_wordpress_plugin_state deaktivieren, dann löschen); Must-Use-Plugins und Drop-ins; Plattform-Plugins (LiteSpeed Cache, Imunify, WP Toolkit, turbometrics, turbopress-…); WordPress-Multisite-Installationen insgesamt. Bei einer Verweigerung wird nichts gelöscht und kein Backup-Platz verbraucht. Vor dem Löschen wird ein Sicherheits-Backup erstellt; lässt es sich nicht erstellen oder nicht nachweisen, wird NICHTS gelöscht. Zurückholen lässt sich ein gelöschtes Plugin oder Theme nur über dieses Backup (restore_wordpress_backup, stellt aber die ganze Installation auf den Backup-Stand zurück) oder durch Neuinstallation — das Löschen selbst ist endgültig. Sag dem Kunden deshalb VOR dem Aufruf klar, dass das Löschen endgültig ist: Beim Chat-Zugang sieht der Kunde danach eine Bestätigungskarte, die Antwort ist dann nur eine Bestätigungsanfrage, nichts wurde gelöscht. Übergib IMMER der Slug (Ordnername, z. B. "hello-dolly"), nie den Anzeigenamen — er lässt sich aus dem Namen nicht ableiten. Die Slugs aller installierten Plugins und Themes (auch inaktiver) nennt get_wordpress_plugins; get_outdated_plugins nennt sie nur für Einträge mit offenem Update, scan_wordpress_vulnerabilities nennt Slugs von Plugins und Themes mit bekannten Schwachstellen (auch inaktiven, die man dann löschen will); ist der Slug nicht bekannt, zuerst get_wordpress_plugins aufrufen, statt zu raten. Nach dem Löschen wird auf der Installation NACHGELESEN: Erst wenn der Eintrag dort nicht mehr steht, gilt er als gelöscht. Lässt sich das nicht bestätigen, melde es als nicht bestätigt, nie als gelöscht. Nie "alle auf einmal", immer nur ein Element pro Aufruf.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Slug (Ordnername) des Plugins oder Themes, z. B. "hello-dolly" — nicht der Anzeigename. Höchstens 100 Zeichen aus Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich; das erste Zeichen ist ein Buchstabe oder eine Ziffer, kein ".." und kein Schrägstrich. Der Slug muss auf der Installation vorhanden sein, sonst wird nichts gelöscht (Slug-Quelle: get_wordpress_plugins; siehe auch get_outdated_plugins). | |
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen auf derselben Domain: welche gemeint ist | |
| item_type | Yes | Ob ein Plugin oder ein Theme gelöscht werden soll |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds substantial context beyond them: a safety backup is created before deletion and nothing is deleted if it cannot be created or verified, refusals consume no backup quota, deletion is irreversible except via restore_wordpress_backup (which rolls back the whole installation), the chat-access confirmation-card flow, and post-delete verification by re-reading the installation.
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?
The hard constraint (inactive-only, single item) is front-loaded and every block covers a distinct concern. It is nonetheless long and repeats the irreversibility point twice ('das Löschen selbst ist endgültig' and the customer-warning sentence), which is defensible for a destructive tool but not maximally tight.
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 destructive, four-parameter tool with no output schema, the description covers preconditions, refusal cases, backup/restore path, human-in-the-loop confirmation, and how success is verified afterwards. Nothing an agent needs to call it safely 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 schema already carries the heavy lifting, including the slug pattern, the 'not the display name' rule and the get_wordpress_plugins slug source. The description reinforces the slug rule ('Übergib IMMER der Slug ... nie den Anzeigenamen') but adds no new semantics for domain, site_url or item_type, so the baseline 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 opens with a specific verb and resource ('Löscht EIN WordPress-Plugin oder -Theme, das INAKTIV ist') and immediately scopes the operation to exactly one element per call. It explicitly names the sibling that must be used first for the alternative case (set_wordpress_plugin_state) and distinguishes itself from get_wordpress_plugins / get_outdated_plugins / scan_wordpress_vulnerabilities by role.
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 enumerates when the tool refuses (active theme and its parent, last default theme, active/network-active plugins, must-use plugins and drop-ins, platform plugins, multisite) and points to the correct preceding tool for the deactivation path. It also states the slug-discovery procedure ('ist der Slug nicht bekannt, zuerst get_wordpress_plugins aufrufen, statt zu raten') and the one-item-per-call rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_beginWebsite-Deploy startenAInspect
Startet einen neuen Website-Deploy für eine Domain im Tarif turbopress AI Launch und liefert die deploy_id. Ablauf, immer in dieser Reihenfolge: 1) deploy_begin, 2) deploy_put_file für JEDE Datei der Website, 3) deploy_preview und dem Nutzer den Vorschau-Link zeigen, Warnungen nennen und ausdrücklich fragen, ob veröffentlicht werden soll, 4) deploy_publish ERST nach seiner ausdrücklichen Bestätigung. Erwartet wird fertiges, statisches HTML/CSS/JS mit relativen Pfaden und index.html als Startseite – kein Build-Step, kein React/JSX/Vue-Quellcode (Claude Design: Export → Standalone HTML). Formulare: action="/_tp/form.php" method="post", jedes Eingabefeld mit name-Attribut, optional für eine Danke-Seite; die Empfänger-Adresse mit set_contact_form festlegen. Bilder aus dem Netz mit deploy_import_asset übernehmen statt sie zu verlinken (Hotlinking); große Binärdateien nie als Base64 in deploy_put_file. Anleitung für den Nutzer: https://panel.turbopress.de/knowledgebase/171/Website-direkt-aus-Claude-oder-ChatGPT-veroffentlichen.html
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic safety profile (readOnly=false, destructive=false, openWorld=true); the description adds substantive behavior: it returns a deploy_id, expects finished static HTML/CSS/JS with relative paths and index.html, forbids build steps and framework source, and warns against base64 payloads and hotlinking. None of this is recoverable from the structured fields.
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?
The workflow is front-loaded and the numbered sequence is easy to scan, but the block is long and mixes in guidance that arguably belongs to sibling tools (form action markup, set_contact_form, deploy_import_asset, deploy_put_file). Still, each element supports correct invocation, so only mild bloat.
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?
No output schema exists, yet the description names the return value (deploy_id), the input expectations, and the mandatory follow-up sequence. An agent has everything needed to start a deploy and know what to do next.
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 description coverage is 100% and the single 'domain' parameter is already documented in the schema with an example. The description restates the domain/plan constraint but adds no format or syntax detail beyond it, so the baseline 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?
States a specific verb and resource ('Startet einen neuen Website-Deploy für eine Domain') plus the return value (deploy_id) and the plan constraint (turbopress AI Launch). An agent can distinguish it from deploy_git, deploy_preview and deploy_publish immediately.
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?
Gives an explicit ordered workflow (deploy_begin → deploy_put_file → deploy_preview → deploy_publish), names the condition for the final step ('ERST nach seiner ausdrücklichen Bestätigung') and points to the sibling tools to use for each stage. This is exactly the when/when-not/alternative guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_gitGit-Anbindung verwaltenADestructiveInspect
Git-Anbindung einer Website im Tarif turbopress AI Launch: Bei jedem Push auf den eingestellten Branch eines GitHub- oder GitLab-Repositorys lädt turbopress den aktuellen Stand, prüft ihn und erstellt eine Vorschau (wie deploy_preview). action "get" zeigt die Einstellung samt Webhook-URL und Webhook-Secret und das Ergebnis des letzten Laufs; "set" richtet sie ein bzw. ändert sie (provider, repo als "besitzer/name", branch, optional subdir mit der fertigen Website, z. B. "dist"); "run" lädt den aktuellen Branch-Stand sofort; "remove" entfernt die Anbindung. Das Repository muss fertiges, statisches HTML enthalten (kein Build-Step). Nach "set" dem Nutzer Webhook-URL, Secret und die Anleitung (webhook_help) geben. Zugriffstokens für private Repositorys NIE im Chat erfragen – die trägt der Nutzer selbst im Kundenbereich ein. auto_publish=true (jeder Push geht ohne Freigabe live) nur setzen, wenn der Nutzer das ausdrücklich so will; sonst die Vorschau aus dem letzten Lauf zeigen und erst nach seiner Zustimmung deploy_publish mit dessen deploy_id aufrufen.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Bei "set": Repository als "besitzer/name" bzw. "gruppe/projekt" | |
| action | Yes | "get" (Standard), "set", "run" oder "remove" | |
| branch | No | Bei "set": Branch, Standard "main" | |
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| subdir | No | Bei "set": Unterordner mit der fertigen Website, z. B. "dist"; leer = Repository-Wurzel | |
| provider | No | Bei "set": "github" oder "gitlab" (gitlab.com) | |
| auto_publish | No | Bei "set": true = jeder Push geht ohne Freigabe live. Nur auf ausdrücklichen Wunsch des Nutzers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive=false... rather destructiveHint=true and openWorldHint=true, but the description adds substantial behavioral context beyond them: webhook-driven push behavior, automatic fetch/check/preview, the security constraint on tokens, and the irreversible auto_publish consequence. This is rich disclosure well above the annotation bar.
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?
The description is a single dense paragraph but is front-loaded with the core purpose before action details, and nearly every sentence carries operational value. It is somewhat long, yet no sentence is filler given the four-action surface area.
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 multi-action mutation tool with no output schema, it covers all actions, what 'get' returns, the required static-HTML constraint, and the safe workflow around auto_publish and deploy_publish. An agent has everything needed to invoke it correctly.
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 description coverage is 100% and each parameter already carries its own 'Bei set:' documentation, so the description's parameter notes (repo as 'besitzer/name', subdir 'dist', branch default main, auto_publish meaning) largely restate the schema. Baseline 3 applies, since the description adds little parameter meaning the schema does not already provide.
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 names a specific verb+resource (managing a website's Git connection) and enumerates all four actions (get/set/run/remove) with their distinct effects. It also situates the tool relative to siblings by stating that pushes produce a preview 'wie deploy_preview' and that publishing continues via deploy_publish.
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 gives explicit per-action guidance and a full workflow: after 'set' hand the user the webhook URL/secret and webhook_help, never request repo access tokens in chat, and only set auto_publish=true on explicit request, otherwise show the last preview and call deploy_publish with its deploy_id after approval. Alternatives and when-not conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_import_assetBild oder Datei aus dem Netz übernehmenAInspect
Lässt den Hosting-Server eine Datei selbst aus dem Netz laden und in einen offenen Deploy legen – für Bilder, Fonts oder PDFs, die auf der Website verwendet werden sollen. Statt große Dateien als Base64 mit deploy_put_file zu schicken oder Bilder von fremden Servern einzubinden (Hotlinking), immer dieses Tool verwenden. url muss eine öffentliche https-Adresse sein; path ist der Zielpfad in der Website (z. B. "img/team.jpg") und muss zur Dateiart passen (JPEG → .jpg, WebP → .webp, PNG → .png). Höchstens 10 MB. Danach im HTML auf "/" verweisen. Lizenz des Bildes vorher klären (eigene Bilder, Unsplash/Pexels-Lizenz o. ä.). Bilder von images.unsplash.com und images.pexels.com übernimmt deploy_publish auch automatisch.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Öffentliche https-Adresse der Datei | |
| path | Yes | Zielpfad in der Website, z. B. "img/hero.webp" | |
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| deploy_id | Yes | Die deploy_id aus deploy_begin (26 Zeichen) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, but the description adds real behavioral context beyond them: the 10 MB size cap, the requirement that path extension match the file type, the licensing prerequisite, and the follow-up step of referencing "/<path>" in HTML.
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?
Front-loaded with the core action and the alternative-routing rule, then constraints, then follow-up. Every sentence is informative, though the license remark and unsplash/pexels coda make it slightly heavier than strictly necessary.
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?
No output schema, yet the description covers the mutation nature, prerequisites (public https, 10 MB, matching extension), and the downstream HTML step. Nothing material for correct invocation 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 baseline is 3; the description goes beyond it by tying url to a public https requirement and, crucially, stating that path must match the file type with concrete extension examples. domain and deploy_id are left to the schema, so it is not fully additive.
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 precise verb+resource: the server fetches a file from the web and places it into an open deploy. It scopes the use case (images, fonts, PDFs for the website) and clearly distinguishes itself from deploy_put_file and raw hotlinking.
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 selection guidance: use this instead of sending Base64 via deploy_put_file or hotlinking third-party servers, and it notes deploy_publish already handles images.unsplash.com / images.pexels.com automatically. When-to-use and when-an-alternative-applies are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_listVersionen der Website anzeigenARead-onlyInspect
Listet die Releases (Deploys) einer Website im Tarif turbopress AI Launch mit Zeitpunkt, Status und welches gerade live ist. Liefert die deploy_id, die deploy_rollback braucht. Aufbewahrt werden die letzten 10 veröffentlichten Releases; nicht veröffentlichte Deploys werden nach 24 Stunden entfernt.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context beyond that: the retention window (last 10 published releases kept, unpublished deploys purged after 24 hours) and the fact that a live release is identified. It stops short of describing ordering or exact response shape, but the added value is real.
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 tightly packed sentences, front-loaded with what the tool returns and immediately followed by the rollback linkage. The retention sentence is slightly tangential but still earns its place by explaining why the list may be short. No filler.
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?
With no output schema, the description carries the burden of describing returns and does so (deploy_id, timestamp, status, live marker). It also covers retention limits and the downstream consumer of the ID, so an agent has everything needed to call and interpret this tool.
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?
Only one parameter and schema description coverage is 100%, so the schema already documents 'domain' fully. The description reinforces that the domain must belong to the turbopress AI Launch plan, which is a small semantic addition, but it adds no format or validation detail beyond the schema. Baseline 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?
States a specific verb and resource (lists releases/deploys of a website) plus the plan scope (turbopress AI Launch) and exactly what each entry contains (timestamp, status, which is live). An agent can distinguish it from siblings like deploy_preview, deploy_publish or deploy_begin without opening any 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?
It gives a concrete routing signal: it supplies the deploy_id that deploy_rollback requires, implying 'call this before a rollback'. However, it never states when not to use it or contrasts it against the other deploy_* tools, so no explicit exclusions are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_previewVorschau erstellenAInspect
Prüft einen offenen Deploy und stellt ihn unter einer Vorschau-Adresse bereit (https://.turbopress.cloud/, nicht öffentlich auffindbar) – die Live-Website bleibt unverändert. Nach dem Hochladen aller Dateien IMMER zuerst deploy_preview aufrufen, dem Nutzer den Vorschau-Link zeigen und die Warnungen aus dem Report nennen (insbesondere Impressum/Datenschutz, Felder ohne name, externe Dienste) und anbieten, sie zu beheben. Erst wenn der Nutzer die Vorschau ausdrücklich freigibt, deploy_publish aufrufen. BLOCKING im Report bedeutet: keine Vorschau – Probleme beheben, Dateien erneut hochladen, erneut deploy_preview. Die automatische Prüfung bindet Google Fonts, CDN-Bibliotheken und Stockfotos lokal ein und verdrahtet Formulare.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| deploy_id | Yes | Die deploy_id aus deploy_begin (26 Zeichen) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, openWorld=true. The description adds substantive context: live site unchanged, random non-discoverable preview URL, a report with specific warning categories, and that the automatic check locally embeds Google Fonts, CDN libraries, and stock photos while wiring forms.
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?
Front-loads the purpose in the first sentence, then provides workflow constraints and failure handling. Every sentence carries actionable information needed for correct invocation, and the length is justified by the multi-step deploy workflow.
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?
With no output schema, the description explains what the generated report contains, how to react to warnings, and what BLOCKING means for next steps. It gives the agent enough operational context to call the tool and handle its results correctly.
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 description coverage is 100%, and the schema already documents both domain and deploy_id. The description adds no additional meaning about these parameters, so the baseline score 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?
States a specific verb 'prüft' and action 'stellt bereit' with the resource 'Vorschau-Adresse', and explicitly notes the live website remains unchanged, distinguishing it from deploy_publish. An agent can immediately tell what this tool does and what it does not do.
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?
Gives explicit when/when-not instructions: always call deploy_preview after uploading files, show link, mention warnings, offer to fix, and only call deploy_publish after explicit user approval. Also defines BLOCKING behavior and the required follow-up steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_publishWebsite veröffentlichenADestructiveInspect
Prüft den Deploy und schaltet ihn live: Die neue Version ersetzt die aktuelle Website sofort. NUR aufrufen, nachdem der Nutzer die Veröffentlichung in diesem Gespräch ausdrücklich bestätigt hat (z. B. "ja, veröffentlichen") – nie automatisch nach dem Hochladen und nie ohne Rückfrage. Vor dem Live-Schalten läuft eine automatische Prüfung: Formulare werden an /_tp/form.php angebunden und mit Spamschutz versehen, eine einzelne HTML-Datei wird zu index.html. Die Antwort enthält einen Report: BLOCKING bedeutet, dass NICHTS veröffentlicht wurde – die Punkte beheben, betroffene Dateien erneut mit deploy_put_file hochladen und nach erneuter Bestätigung wieder deploy_publish aufrufen. WARNUNGEN (z. B. fehlendes Impressum/Datenschutz, Felder ohne name, fehlender Formular-Empfänger) dem Nutzer nennen und anbieten, sie zu beheben. Jede frühere Version bleibt erhalten und ist mit deploy_rollback wiederherstellbar.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| deploy_id | Yes | Die deploy_id aus deploy_begin (26 Zeichen) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds substantial context beyond them: the automatic pre-publish validation (forms bound to /_tp/form.php with spam protection, single HTML file becomes index.html), the guarantee that BLOCKING means nothing was published, the nature of WARNINGS, and that previous versions remain restorable. This is exactly the kind of operational detail an agent needs before a destructive action.
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?
Front-loaded with the confirmation gate, then the mechanism, then the report semantics and recovery. It is fairly long and dense, but essentially every sentence carries operational value; a slight tightening of the warning examples would help.
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?
No output schema exists, and the description compensates by explaining the response shape (BLOCKING vs. WARNINGS and what each implies). Combined with the safety gate, side effects and recovery path, an agent has everything needed to invoke and interpret this correctly.
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 description coverage is 100%, so both parameters (domain, deploy_id) are already documented in the schema. The description adds no parameter-level detail beyond that, so the baseline 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?
States a specific verb and resource ("Prüft den Deploy und schaltet ihn live") and immediately scopes the effect: the new version replaces the current website. It is clearly distinguishable from siblings like deploy_preview, deploy_put_file and deploy_rollback, which are even named.
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?
Gives explicit when-to-use and when-not-to-use guidance: only after explicit user confirmation in this conversation ("ja, veröffentlichen"), never automatically after upload and never without asking. It also names the recovery alternative (deploy_rollback) and the follow-up path (deploy_put_file) when BLOCKING occurs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_put_fileDatei hochladenADestructiveInspect
Lädt eine Datei in einen offenen Deploy (aus deploy_begin). Pro Datei ein Aufruf; Bilder aus dem Netz stattdessen mit deploy_import_asset laden (nicht hotlinken), große Binärdateien nie als Base64. eine Datei erneut hochzuladen überschreibt sie. path ist relativ zur Website-Wurzel (z. B. "index.html", "css/style.css", "img/logo.webp"): nur A–Z, a–z, 0–9, Punkt, Unterstrich, Bindestrich und "/", keine Umlaute oder Leerzeichen, keine versteckten Dateien (außer .well-known/), nichts unter _tp/. Erlaubt sind nur statische Dateitypen (html, css, js, json, svg, png, jpg, webp, avif, gif, ico, woff2, woff, ttf, otf, txt, xml, webmanifest, pdf, mp4, webm …) – keine .php- oder .htaccess-Dateien. Text (HTML, CSS, JS, SVG) mit encoding "utf8", Binärdateien (Bilder, Fonts, PDF) mit encoding "base64". Höchstens 1 MB pro Aufruf; große Bilder vorher verkleinern. Veröffentlicht NICHTS – das macht erst deploy_publish nach Bestätigung durch den Nutzer.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Pfad relativ zur Website-Wurzel, z. B. "css/style.css" | |
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| content | Yes | Dateiinhalt: Text bei encoding "utf8", Base64 bei encoding "base64" | |
| encoding | No | "utf8" (Standard) für Text, "base64" für Binärdateien | |
| deploy_id | Yes | Die deploy_id aus deploy_begin (26 Zeichen) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description goes further: re-uploading the same path overwrites it, only static file types are accepted, .php/.htaccess are rejected, size is capped at 1 MB per call, and nothing is published. That is exactly the kind of destructive/limit/auth context annotations cannot express.
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?
It is a dense single block, but every clause carries an actionable constraint and the core purpose is front-loaded. Slight deduction for the wall-of-rules formatting that makes scanning harder, though nothing is truly filler.
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?
No output schema exists, and none is needed: the description explains that loading only stages the file and that deploy_publish finalizes, covering the 'what happens next' an agent needs for a write tool with a 5-param schema.
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 baseline would be 3, but the description adds substantial meaning the schema lacks: path character set and forbidden patterns (umlauts, spaces, hidden files, _tp/), the allowed file-type whitelist, examples of valid paths, and the mapping rule for encoding (utf8 for text formats, base64 for binaries).
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+scope: 'Lädt eine Datei in einen offenen Deploy (aus deploy_begin)'. It ties itself to a specific lifecycle stage and even rules out the sibling path with 'Bilder aus dem Netz stattdessen mit deploy_import_asset laden'. An agent can distinguish it from deploy_import_asset, deploy_git and deploy_publish without opening a 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?
Gives explicit when-to-use ('Pro Datei ein Aufruf'), the alternative and its condition (web images via deploy_import_asset rather than hotlinking), and an explicit exclusion about the publish step ('Veröffentlicht NICHTS – das macht erst deploy_publish nach Bestätigung durch den Nutzer'). This is close to a routing rule, not just background.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_rollbackFrühere Version wiederherstellenADestructiveInspect
Schaltet eine früher veröffentlichte Version der Website wieder live (atomarer Tausch, ohne Ausfall). deploy_id aus deploy_list verwenden. Vorher mit dem Nutzer klären, welche Version gemeint ist, und seine Bestätigung einholen – die aktuell live geschaltete Version wird dabei ersetzt (bleibt aber erhalten).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| deploy_id | Yes | Die deploy_id aus deploy_begin (26 Zeichen) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the danger profile is known. The description adds genuinely new behavioral context: the swap is atomic with no downtime, and the version being replaced is retained rather than lost, which materially changes the agent's risk calculus.
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 dense sentences, front-loaded with the action and mechanism, then the parameter source, then the confirmation precondition. No filler, though the parameter-source sentence is the weakest and partly redundant with 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?
No output schema exists, but the description covers what an agent needs for a destructive mutation: what changes, that it is atomic and downtime-free, that the old version survives, and that user confirmation is required. The only gap is the unresolved deploy_list vs deploy_begin conflict.
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 both parameters are already documented and the baseline is 3. The description adds a source for deploy_id, but it names deploy_list while the schema says deploy_id comes from deploy_begin (26 characters) – a discrepancy that is more likely to confuse than help.
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 ('Schaltet eine früher veröffentlichte Version ... wieder live') and adds the mechanism (atomarer Tausch, ohne Ausfall). An agent can distinguish this from deploy_publish/deploy_preview/deploy_begin without opening any schema, since it is explicitly a revert of an already-published version.
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?
Gives a clear precondition chain: clarify with the user which version is meant, obtain confirmation, then use a deploy_id from deploy_list. It does not name a sibling alternative (e.g. deploy_publish) or state when not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_websiteWebsite diagnostizierenARead-onlyInspect
Aggregiert alle relevanten Signale einer Domain (live: HTTP-Erreichbarkeit, SSL, Speicherplatz, Datenbanken, fatale PHP-Fehler aus dem Fehlerprotokoll; aus dem letzten Report: Security, DNS, CloudLinux, WordPress) zu EINER priorisierten Hauptdiagnose statt vieler Einzelantworten. Ideal für "meine Seite ist kaputt/langsam, was ist los?" statt mehrere Tools einzeln aufzurufen. Das Protokoll wird im Moment der Abfrage gelesen und nach "PHP Fatal error" und "PHP Parse error" durchsucht, gemeldet werden nur Treffer aus den letzten 48 Stunden — eine Protokolldatei umspannt Monate, ältere Zeilen sind kein aktuelles Problem. Kein Treffer heißt also "nichts in diesem Zeitraum", nicht "nie ein Fehler"; ältere nennt die Antwort im Fußtext. War das Protokoll nicht lesbar, sagt die Antwort das ausdrücklich — dann ist ein PHP-Fehler offen, nicht ausgeschlossen. Andere Meldungen (Warnungen, Hinweise) oder ein eigenes Suchmuster: search_domain_error_log.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld/non-destructive; the description adds substantial behavior beyond them: the log is read at query time, only the last 48 hours are reported, a no-hit result means 'nothing in this window' rather than 'never an error', and an unreadable log is explicitly reported as an open (not excluded) PHP error. This is exactly the interpretive context an agent needs.
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?
Front-loaded with purpose and usage scenario, then dense edge-case semantics. It is long (multiple sentences) but nearly every sentence earns its place by clarifying result interpretation; a slightly tighter phrasing of the log-window caveats could still trim length.
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 diagnostic aggregator with no output schema, the description covers what is aggregated, the live vs. report sources, and the crucial interpretation caveats (48h window, unreadable log, footer note about older errors). Nothing an agent needs to call and interpret 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 description coverage is 100% and there is a single 'domain' parameter, so the schema already carries the semantics. The description adds no format/syntax detail for the parameter beyond what the schema provides, so the baseline 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 verb+resource ('aggregiert alle relevanten Signale einer Domain ... zu EINER priorisierten Hauptdiagnose') and immediately delimits itself from the many single-signal siblings by naming search_domain_error_log as the tool for other log queries. An agent can tell what this tool is and what it is not without opening any 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?
It gives an explicit trigger scenario ('meine Seite ist kaputt/langsam, was ist los?') and explicitly contrasts the approach with calling several individual tools. It also routes a specific alternative case (warnings/notices or custom patterns) to search_domain_error_log.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_https_redirectHTTPS-Weiterleitung reparierenAInspect
Aktiviert (Standard) oder deaktiviert die automatische HTTP→HTTPS-Weiterleitung für eine Domain. Behebt das von diagnose_website/get_website_report gemeldete Finding "kein HTTPS-Redirect" direkt, statt es nur anzuzeigen. Reversibel und betrifft nur diese eine Einstellung. Vor dem EINSCHALTEN wird per echtem TLS-Handshake gemessen, ob die Domain aktuell ein gültiges, auf sie lautendes Zertifikat ausliefert: Ohne eines würde nach dem Einschalten jeder http-Aufruf auf einer Zertifikatswarnung landen statt auf der Seite — das wird deshalb abgelehnt (fehlendes, abgelaufenes oder fremdes Zertifikat), mit dem Hinweis, zuerst create_ssl_certificate zu nutzen. Lässt sich die Messung nicht durchführen (Handshake kommt nicht zustande), wird ebenfalls abgelehnt, aber mit eigener Begründung: Das ist WEDER ein Beleg für ein fehlendes NOCH für ein vorhandenes Zertifikat. force=true übergeht diese Prüfung bewusst (z. B. wenn das Zertifikat unmittelbar danach ausgestellt wird). Abschalten wird nie geprüft. Der gesetzte Zustand wird nach dem Schreiben aus Plesk zurückgelesen; gelingt das nicht, sagt die Antwort, dass der genannte Zustand der gewünschte und nicht der gemessene ist.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Die Zertifikatsprüfung vor dem Einschalten übergehen (Standard: false) — nur setzen, wenn der Kunde die Weiterleitung ausdrücklich auch ohne gültiges Zertifikat will; Besucher sehen dann ggf. eine Zertifikatswarnung statt der Seite | |
| domain | Yes | Die Domain, z. B. example.de | |
| enabled | No | true (Standard) = Weiterleitung aktivieren, false = deaktivieren |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), non-destructive, and open-world. The description adds a lot beyond that: reversibility, single-setting scope, a real TLS handshake pre-check with distinct rejection reasons, the force bypass, and post-write readback semantics with a fallback message when readback fails. On its own merits this is rich (5-level), but the safety profile is already carried by annotations, so the marginal value is good rather than exceptional.
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?
Front-loaded with purpose and remediation intent, and every clause carries real operational information (check conditions, rejection reasons, force, readback). It is a dense single block rather than a structured list, which slightly hurts scanability, but there is little waste.
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?
With no output schema, the description compensates by explaining what the response reports, including the subtle readback-failure case where the returned state is desired rather than measured. For a mutation tool with a non-trivial pre-check, nothing an agent needs 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 description coverage is 100% and all three parameters (domain, enabled, force) are fully documented in the schema, including force's warning about certificate warnings for visitors. The description adds only marginal nuance about force's typical timing, so baseline 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?
States a specific verb (aktiviert/deaktiviert) and resource (die automatische HTTP→HTTPS-Weiterleitung für eine Domain) and explicitly distinguishes itself from the diagnostic siblings by noting it fixes the 'kein HTTPS-Redirect' finding from diagnose_website/get_website_report rather than only displaying it.
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?
Gives explicit when-to-use (fix the reported HTTPS-redirect finding), prerequisites (use create_ssl_certificate first when no valid cert), an escape hatch (force=true deliberately bypasses the check, e.g. when the cert is issued right afterwards), and an exclusion (disabling is never checked).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_backup_statusBackup-Status anzeigenARead-onlyInspect
Ruft den Stand der nächtlichen Gesamtsicherung des Servers ab (Datum, Status und Alter der letzten Sicherung), die diese Domain mit umfasst. Das ist KEINE Sicherung speziell dieser Domain: gesichert wird die gesamte Konfiguration und der gesamte Inhalt des Servers, der gemeldete Wert ist deshalb für alle Domains auf demselben Server identisch. Davon zu unterscheiden: get_wordpress_backups und create_wordpress_backup betreffen die WP-Toolkit-Backups einer einzelnen WordPress-Installation — geht es um das Sichern oder Zurückholen einer einzelnen Seite, sind diese zuständig, nicht dieses Werkzeug. Liegt kein auswertbarer Wert vor, wird das ausdrücklich als Messausfall gemeldet; daraus folgt NICHT, dass keine Sicherung existiert. Stammt aus dem einmal täglich aktualisierten turbocheck-Bericht (Zeitstempel in der Antwort).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description goes well beyond that by disclosing that the reported value is shared across all domains on the server, that a missing/unreadable value is reported as an explicit measurement failure rather than proof that no backup exists, and that the data comes from a turbocheck report refreshed once daily (timestamp in the response). Only the response shape/pagination is left unstated.
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?
Purpose and scope are front-loaded, and every sentence carries distinct information (scope warning, sibling routing, failure semantics, data freshness). It is on the dense side at five sentences, but none is filler and each removes a plausible agent error.
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?
With no output schema, the description takes on the burden of describing returns and does so (date, status, age of the last backup), plus it explains the shared-per-server nature of the value and the failure case. An agent has everything needed to call and interpret this correctly.
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 description coverage is 100% for the single 'domain' parameter, so the schema already documents it fully. The description adds no syntax, format, or default guidance for the parameter beyond what the schema provides, making the baseline 3 appropriate.
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 (retrieves the server's nightly full-backup status: date, status, age) and immediately pins the scope by declaring it is NOT a domain-specific backup, since the value is identical for every domain on the same server. It explicitly names the sibling tools it is not (get_wordpress_backups, create_wordpress_backup), so an agent can distinguish it without opening a 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?
Gives an explicit alternative and the selecting condition: for backing up or restoring a single WordPress site, get_wordpress_backups / create_wordpress_backup are the right tools, not this one. It also states the inverse usage case (server-wide backup state covering this domain), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bulk_update_statusFortschritt des Sammel-Updates anzeigenARead-onlyInspect
Zeigt den Fortschritt eines Sammelauftrags je Site (wartet, läuft, fertig, ungeprüft, fehlgeschlagen) samt kurzer Zusammenfassung. Eingabe ist die batch_id aus start_bulk_wordpress_update. Nur abfragen, wenn der Kunde den Fortschritt wissen will — nicht von sich aus nach dem Start wiederholt nachfragen. „Ungeprüft“ heißt: der Ausgang ist nicht belegt, die Website bitte prüfen. Ein Auftrag, der nach 3 Stunden noch wartet, gilt als abgebrochen und muss neu gestartet werden.
| Name | Required | Description | Default |
|---|---|---|---|
| batch_id | Yes | Die batch_id aus der Antwort von start_bulk_wordpress_update (32 Zeichen, Ziffern und Kleinbuchstaben a bis f) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/non-destructive annotations, the description explains what 'ungeprüft' means and what the agent should do about it, and states an operational rule no annotation carries: a job still waiting after 3 hours is considered aborted and must be restarted. That is exactly the kind of domain behavior the structured fields cannot express.
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?
Front-loaded with what is returned, then input, then usage rule, then two edge-case definitions. Every sentence carries information, though the status list and the 'ungeprüft' explanation occupy similar ground and could be slightly tighter.
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?
No output schema exists, so the description must explain return content — and it does, listing per-site states plus a summary. It also covers failure/timeout interpretation, which an agent needs to act on the result correctly.
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?
Only one parameter and schema description coverage is 100% — the schema already documents the 32-character hex format. The description adds the provenance of the value (the batch_id from start_bulk_wordpress_update), which is modest but useful linkage, without adding any new constraints.
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?
Names a specific verb and resource ('shows the progress of a bulk job per site') and immediately enumerates the status vocabulary, so an agent knows exactly what comes back. It also implicitly separates this read tool from start_bulk_wordpress_update, which it names as the source of the input.
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 and when-not-to-use: 'nur abfragen, wenn der Kunde den Fortschritt wissen will — nicht von sich aus nach dem Start wiederholt nachfragen.' This directly prevents the most likely misuse (polling loop) and pairs the tool with the sibling that produces the batch_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cloudlinux_statusRessourcen-Limits anzeigenARead-onlyInspect
CloudLinux/LVE-Ressourcenlimits einer Domain abrufen (Überschreitungen bei CPU, Speicher, Prozessen, I/O). Stammt aus dem einmal täglich aktualisierten turbocheck-Bericht — die Zähler gehören zur letzten Erhebungsperiode, nicht zum Moment der Abfrage; eine Drosselung von vorhin taucht ggf. erst nach dem nächsten Durchlauf auf.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description isn't obligated to restate that. It instead adds non-obvious behavioural context: the values come from a once-daily turbocheck report, reflect the last collection period rather than the query moment, and a recent throttle may only surface on the next run — exactly the kind of freshness limitation an agent cannot infer from structured fields.
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?
Two sentences, front-loaded with what is retrieved before the caveat. The parenthetical metric list is slightly dense but every clause carries information — nothing is padding.
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 single-parameter read-only tool this covers purpose, metric scope and the major staleness pitfall. With no output schema present, a brief hint at the shape of the returned counters (limits vs. current usage) would make it fully self-sufficient, but the gap is minor.
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?
Only one parameter (domain) and schema description coverage is 100%, with the schema already providing an example value. The description adds no format, validation or scoping detail beyond the schema, so baseline 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?
Names a specific verb+resource: retrieving CloudLinux/LVE resource limits for a domain, and enumerates the monitored dimensions (CPU, memory, processes, I/O). That is enough to separate it from generic siblings like get_webspace_usage or get_performance_score, though it never explicitly names the neighbouring tool it could be confused with.
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?
Usage is only implied — an agent infers 'use this to inspect a domain's LVE limits'. There is no explicit when-to-use/when-not or named alternative such as get_webspace_usage, but the daily-report caveat does tell the agent when the data is and isn't appropriate (not for live/diagnostic queries).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cronjobsCronjobs anzeigenARead-onlyInspect
Zeigt die geplanten Aufgaben (Cronjobs) einer Domain — Plesk "Geplante Aufgaben". Jede Zeile beginnt mit der Kennung, genau der Zahl, die delete_cronjob als cronjob_id erwartet. Die Kennungen sind NICHT stabil: Ein neu angelegter Cronjob kann eine frei gewordene Kennung wiederverwenden, deshalb vor einem Löschen frisch abrufen und nie eine Kennung aus einer früheren Antwort verwenden. Eine Aufgabe kann abgeschaltet sein — dann steht das in ihrer Zeile, und sie läuft nicht, obwohl sie eingerichtet ist; gib das ungekürzt weiter. War die Liste nicht abrufbar, sagt die Antwort genau das: Behaupte dann nie, es gebe keine Cronjobs.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only and non-destructive, and the description adds substantial non-obvious behavior: identifier reuse after deletion, how a disabled task manifests in a row, and how an unavailable list is signaled. It even warns against asserting 'no cronjobs' when retrieval failed, which directly guards against a common hallucination.
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?
Front-loaded with purpose, then stacked with operational caveats (identifier instability, disabled-task reporting, retrieval failure). Every sentence carries actionable information, though it is on the denser side for a single-parameter read tool.
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?
With no output schema, the description compensates by describing the row format (leading identifier), the disabled marker, and the failure response. An agent has enough to call it and interpret the result without guessing.
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?
Only one parameter (domain) at 100% schema description coverage, so the schema already documents it; the description only implies the domain scoping. Baseline 3 is appropriate since there is nothing extra to add.
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 ('zeigt die geplanten Aufgaben (Cronjobs) einer Domain') and anchors it to Plesk's 'Geplante Aufgaben' concept, which separates it from generic list tools. It also names the sibling relationship by explaining the identifier is exactly what delete_cronjob expects.
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?
Gives a clear precondition for the downstream delete flow: fetch fresh and never reuse an identifier from an earlier response. It does not explicitly contrast with create_cronjob or any alternative list source, so it falls short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_databasesDatenbanken anzeigenARead-onlyInspect
Liste der Datenbanken einer Domain live von Plesk abrufen (Namen immer aktuell, auch direkt nach create_database). Größenangaben stammen aus dem letzten turbocheck-Bericht und fehlen für Datenbanken, die seither angelegt wurden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/destructive/openWorld profile, and the description adds genuinely new behavioral context: names are fetched live from Plesk while sizes come from the last turbocheck report and are absent for newly created databases. This data-source and freshness disclosure is valuable beyond the annotations.
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?
Two compact sentences with the main action front-loaded and the freshness caveat second. No filler, though the parenthetical could be tightened slightly.
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 single-parameter read tool with no output schema and full annotation coverage, the description supplies what an agent needs: the data source for each field and the caveat that sizes may be missing. The return shape (names plus sizes) is implied but not itemized, which is the only minor gap.
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?
Only one parameter exists and schema description coverage is 100%, so the schema already documents 'domain' with an example. The description refers to 'einer Domain' but adds no format or constraint detail beyond the schema; baseline 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?
States a specific verb and resource ('Liste der Datenbanken einer Domain ... abrufen') and makes the scope explicit (one domain), so an agent can distinguish it from create_database/delete_database. It does not name a sibling alternative outright, but the parenthetical reference to create_database clarifies its role.
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?
Usage is implied rather than stated: the note that names are always live 'auch direkt nach create_database' hints at using this to verify state after a create. There is no explicit when-to-use/when-not guidance or named alternative for listing databases, leaving the agent to infer the trigger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_recordsDNS-Einträge anzeigenARead-onlyInspect
DNS-Zone-Records einer Domain live von Plesk abrufen. Das ist die Zone bei turbopress: Sie gilt im Internet nur, wenn die Nameserver der Domain bei turbopress liegen (dns1–4.turbopress.de). Liegen sie woanders, steht vor der Liste eine ausdrückliche Warnung mit den Nameservern — dann nicht aus dieser Zone auf Mail- oder Webseiten-Auflösung der Domain schließen, und Änderungen an DNS-Einträgen werden dort abgelehnt (beim Anbieter der Nameserver eintragen). Jede Zeile beginnt mit der Kennung des Eintrags — genau die Zahl, die delete_dns_record als record_id erwartet. Die Kennungen sind nicht stabil: Sie werden neu vergeben, wenn ein Eintrag angelegt oder gelöscht wird, und gehören deshalb unmittelbar vor einem Löschen oder Ändern frisch abgerufen. Jeder Eintrag trägt "herkunft": "turbopress" heißt, dass die Plesk-DNS-Vorlage genau diesen Eintrag erzeugt (oder er zu den Sonderfällen von turbopress gehört), "eigen" heißt, dass er vom turbopress-Standard abweicht (von Hand angelegt oder geändert, oder er gehört zu einem anderen Paket derselben Zone; z. B. MX auf Google oder ein SPF mit include). SRV- und CAA-Einträge werden in lesbaren Feldern ausgegeben; die Zusatzangabe "opt" steht dahinter und wird für update_dns_record als alt.opt unverändert übernommen (MX: Priorität, SRV: "Priorität Gewicht Port", CAA: "Flag Art"). Einträge mit einem Platzhalter als Wert sowie SRV- oder CAA-Einträge ohne lesbare Teile lassen sich mit update_dns_record nicht bearbeiten — dann nur nach Zustimmung des Kunden delete_dns_record und add_dns_record verwenden. Am Ende steht, wenn lesbar, die Zonen-TTL (Vorgabewert der Gültigkeitsdauer) in Sekunden. Sie ist nur Information: Die Einträge tragen meist eine eigene TTL, und die TTL lässt sich über dieses Werkzeug-Set nicht ändern — wünscht der Kunde vor einem Umzug eine kürzere TTL, verweise ihn an den Support.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false, yet the description adds substantial operational context beyond them: live retrieval from Plesk, a warning when the zone is not authoritative, unstable record IDs, the meaning of 'herkunft', handling of 'opt' fields, entries that cannot be edited, and the informational-only zone TTL. This is exactly the extra behavioral detail that annotations cannot provide.
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?
The description is front-loaded with the core purpose and a critical warning, and every major sentence adds actionable context (ID instability, herkunft semantics, 'opt' mapping, TTL caveat). It is long but dense with relevant detail rather than filler; structure could be improved with paragraph breaks, but it remains readable and purposeful.
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?
With no output schema, the description must explain return content, and it does: each row begins with the record identifier, includes 'herkunft', exposes readable SRV/CAA fields with 'opt', and ends with the zone TTL when readable. It also covers the important edge cases (non-authoritative zone, uneditable entries) so an agent can call and interpret the tool correctly.
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?
There is only one parameter (domain), and schema description coverage is 100%, so the schema already documents its meaning with an example. The description adds no additional format, normalization, or validation guidance for the domain parameter beyond what the schema provides. Baseline 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 first sentence states a specific verb and resource ('DNS-Zone-Records einer Domain live von Plesk abrufen') and clearly distinguishes this tool from the mutation siblings (delete_dns_record, add_dns_record, update_dns_record) that it references for IDs and editing. An agent can identify the tool's role 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?
The description gives clear context for when results are authoritative (nameservers at turbopress) and when they are not, plus a directive to re-fetch IDs immediately before delete/update. It references the editing siblings as alternatives for changes, though it does not explicitly say 'use this tool to inspect before editing' in a single sentence. Strong guidance but slightly implicit in places.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_securityMail-Sicherheit im DNS prüfen (SPF, DKIM, DMARC)ARead-onlyInspect
DNS-Mail-Sicherheitseinstellungen einer Domain abrufen (SPF/DKIM/DMARC/MX). Stammt aus dem einmal täglich aktualisierten turbocheck-Bericht (Zeitstempel in der Antwort) — gerade erst gesetzte Records erscheinen ggf. erst nach dem nächsten Durchlauf. Für sofort aktuelle Einträge der Zone stattdessen get_dns_records nutzen (live von Plesk; gilt nur, wenn die Nameserver der Domain bei turbopress liegen).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Die Annotationen zeigen bereits readOnlyHint=true und destructiveHint=false; die Beschreibung ergänzt wichtige Verhaltensdetails zur Datenfrische, zum Zeitstempel in der Antwort und zur möglichen Verzögerung neu gesetzter Records. Zusätzlich wird die Einschränkung der Live-Alternative auf turbopress-Nameserver transparent gemacht.
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?
Der Zweck steht voran, danach folgen Aktualitätshinweis und Alternative. Die Beschreibung ist dicht, aber ohne überflüssige Sätze und gut auf die Entscheidung des Agents ausgerichtet.
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?
Für ein Tool mit einem Parameter, klaren Read-only-Annotationen und ohne Output-Schema ist die Beschreibung ausreichend vollständig. Sie deckt Zweck, Datenquelle, Aktualitätsgrenze und Alternative ab.
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?
Der einzige Parameter domain ist im Schema bereits vollständig beschrieben, inklusive Beispiel. Die Tool-Beschreibung fügt dazu keine wesentliche zusätzliche Syntax oder Formatinformation hinzu, daher ist die Baseline von 3 angemessen.
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?
Die Beschreibung nennt ein klares Verb und Ressourcenobjekt: DNS-Mail-Sicherheitseinstellungen einer Domain abrufen, mit SPF/DKIM/DMARC/MX. Sie grenzt das Tool außerdem explizit von get_dns_records ab.
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?
Sie erklärt klar, wann dieses Tool passt: Daten stammen aus dem täglich aktualisierten turbocheck-Bericht, neue Records können erst nach dem nächsten Lauf erscheinen. Für sofort aktuelle Zonendaten wird ausdrücklich get_dns_records als Alternative genannt, inklusive der Bedingung, dass die Nameserver bei turbopress liegen müssen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_redirectsDomain-Weiterleitungen anzeigenARead-onlyInspect
Listet die Domain-Weiterleitungen, die auf eine Domain zeigen — welche andere Domain also auf diese hier weiterleitet, mit Kennung und mit dem, was daran hängt. Das lesende Gegenstück zu redirect_domain und die Voraussetzung für remove_domain_redirect. Anzugeben ist die Domain MIT dem Hosting, also das ZIEL der Weiterleitung (bei "alte-domain.de leitet auf neue-domain.de" ist das neue-domain.de). Je Eintrag steht dabei, ob über die weiterleitende Domain nur Web-Aufrufe laufen oder auch E-MAIL an dieselben Postfächer — Letzteres ist der Standard beim Einrichten und geht beim Aufheben mit verloren; das gehört in jede Antwort an den Kunden. Eine leere Liste ist eine abgerufene Auskunft ("es leitet keine Domain hierher"); war die Liste dagegen nicht abrufbar, meldet die Antwort das ausdrücklich als Messausfall — daraus darf NIE "es gibt keine Weiterleitung" werden. STAGING-KOPIEN erscheinen im Hosting-System als dieselbe Art Eintrag und werden deshalb mitgelistet, aber ausdrücklich als Staging gekennzeichnet: Das sind Testumgebungen, keine vom Kunden eingerichteten Weiterleitungen, und remove_domain_redirect hebt sie nicht auf. Unterschieden wird am Namen; ein Feld, das beides sicher trennt, gibt es nicht — bei Unklarheit nicht raten.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain MIT dem Hosting, also das Ziel der Weiterleitung, z. B. neue-domain.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description still adds substantial behavioral context beyond that — entries carry a web-only vs. also-EMAIL scope flag (email is the default and is lost on removal), staging copies are included but marked and are NOT removable by remove_domain_redirect, and an empty result is a valid answer while a failed fetch is reported as a measurement failure that must never be read as 'no redirects'. That failure-semantics warning is exactly the kind of non-obvious behavior annotations cannot express.
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?
Front-loaded with purpose and the read/write relationship, then the parameter meaning, then return content, then the failure and staging caveats — a logical progression. It is dense and slightly repetitive (the staging point is restated across two sentences), but given the traps it must convey, most sentences earn their place.
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?
There is no output schema, and the description compensates by describing what each entry contains (identifier, what depends on it, web vs. email scope, staging marking) plus the empty-result vs. failure distinction. For a single-parameter read tool with annotations covering safety, 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 schema already defines the single 'domain' parameter as the redirect target, so the baseline is 3. The description goes further by spelling out the direction with a worked example and stressing 'MIT dem Hosting', which resolves a genuine ambiguity for the caller rather than merely restating the schema.
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 verb+resource (listing domain redirects pointing at a given domain) and immediately disambiguates the direction — it lists domains that redirect TO the given one, not the other way round. It also names its siblings (redirect_domain, remove_domain_redirect) and positions itself relative to them, so an agent can distinguish it without opening another 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?
Explicitly frames itself as the read counterpart to redirect_domain and the prerequisite for remove_domain_redirect, and tells the caller exactly which value to pass (the redirect TARGET, with a concrete 'alte-domain.de → neue-domain.de' example). It also warns not to guess when staging vs. customer redirects are ambiguous — clear when-to-use and when-to-be-cautious guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domainsDomains anzeigenARead-onlyInspect
Den vollständigen Domainbestand des Kunden abrufen: sowohl die bei turbopress registrierten Domains (mit Ablaufdatum, Registrar-Status und Auto-Renew) als auch die Domains, die bei turbopress gehostet, aber bei einem anderen Anbieter registriert sind. Eine Domain ohne Ablaufdatum ist deshalb kein Fehler, sondern woanders registriert; Test-Subdomains (.trial.turbopress.de) werden nie registriert und haben ebenfalls kein Ablaufdatum. Gehostete Domains lassen sich mit allen übrigen Werkzeugen bearbeiten, unabhängig davon, wo sie registriert sind. Je gehosteter Domain stehen außerdem Tarifart und WordPress-Stand da: WordPress-Werkzeuge (Updates, Plugins, Staging, WordPress-Backups, Cache, Härtung) nur für Domains mit WordPress verwenden bzw. anbieten; Domains im Tarif AI Launch sind statische Websites ohne WordPress/PHP – dort für Änderungen an der Website die deploy_-Werkzeuge nutzen; E-Mail-Postfächer und DNS-Einträge lassen sich wie gewohnt verwalten, alles andere nur lesen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description explains important data quirks: missing expiry dates can mean external registration, trial subdomains are never registered, and hosted domains may be edited regardless of registrar. It also clarifies that the response includes tariff type and WordPress status, and that everything other than email/DNS is read-only, which meaningfully supplements the annotations.
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?
The description is front-loaded with the core purpose and avoids filler, but it is a dense paragraph that includes considerable downstream tool guidance. That information is useful, though the length is notable for a zero-parameter tool.
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?
With no output schema, the description carries the burden of explaining return data, and it does so thoroughly: registered versus hosted domains, expiry-date interpretation, trial subdomains, tariff type, and WordPress status. It also covers follow-up constraints, making the definition complete enough for an agent to call and use the result correctly.
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 tool has zero parameters, so the baseline score is 4. There are no parameter semantics to clarify, and the schema's empty properties object is consistent with the description.
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 verb and resource: retrieve the customer's complete domain inventory, including both turbopress-registered and externally registered but hosted domains. It is clear what the tool returns, but it does not explicitly distinguish get_domains from the sibling get_wordpress_sites tool.
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?
The description gives clear context for using the returned domain data, including which tools apply to WordPress domains, AI Launch static sites, email accounts, and DNS records. It does not explicitly state when to prefer get_domains over a WordPress-specific sibling listing, but no direct alternative for a complete domain inventory is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_accountsE-Mail-Postfächer anzeigenARead-onlyInspect
E-Mail-Konten einer Domain auflisten (live von Plesk): Adresse, Speicherkontingent, eingerichtete WEITERLEITUNG und ALIASE. Das ist das lesende Gegenstück zu set_email_forwarding und set_email_alias — vorher war über den Chat nicht zu sehen, wohin die Post eines Postfachs geht oder unter welchen weiteren Adressen es erreichbar ist. Steht bei einem Konto keine Weiterleitung, ist das eine abgerufene Auskunft ("es ist keine eingerichtet"), keine fehlende Angabe; dasselbe gilt für Aliase. Das Weiterleitungsziel zeigt häufig auf eine FREMDE Domain und wird genau so ausgegeben, wie es eingetragen ist. Dazu steht je Konto der Stand der ABWESENHEITSNOTIZ (an mit Enddatum, aus, abgelaufen; "Stand nicht lesbar" ist keine Aussage) — das lesende Gegenstück zu set_email_autoreply; der Text der Notiz wird nicht ausgegeben. Bei mehr als 30 Postfächern fehlt diese Angabe.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/non-destructive annotations by disclosing that data is fetched live from Plesk, that a blank forwarding field means 'none configured' rather than missing data, that forwarding targets may point to foreign domains and are returned verbatim, and that autoreply status has specific states ('an mit Enddatum, aus, abgelaufen', 'Stand nicht lesbar'). It also notes the note text is not returned and that the autoreply field is absent for accounts beyond 30 mailboxes.
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?
The description is front-loaded with purpose and the most important edge-case semantics. It is fairly long, but nearly every sentence carries useful behavioral information (forwarding semantics, external targets, autoreply states, >30 mailbox limit). Slight redundancy around 'dasselbe gilt für Aliase' keeps it from a 5.
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 single-parameter read tool with no output schema, the description is unusually complete: it enumerates returned fields, defines null/blank semantics, discloses data-source freshness, and documents a size-based limitation. The annotations already cover safety, and the description fills the remaining behavioral and interpretation gaps.
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?
There is only one parameter and schema description coverage is 100%, so the schema already documents 'domain' with an example. The description refers to 'einer Domain' but adds no syntax, format, or constraint beyond what the schema provides. Baseline 3 is appropriate.
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 ('auflisten') and resource ('E-Mail-Konten einer Domain') and lists the exact fields returned (Adresse, Speicherkontingent, Weiterleitung, Aliase, Abwesenheitsnotiz). It explicitly distinguishes itself from sibling mutation tools set_email_forwarding, set_email_alias, and set_email_autoreply, so an agent can route correctly.
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?
Clearly frames itself as the reading counterpart to set_email_forwarding and set_email_alias, implying when to use it. It also explains a key interpretation rule (missing forwarding means 'none configured', not missing data) and notes the >30 mailbox limitation. It stops short of explicit 'use this instead of X when Y' phrasing, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_client_settingsMailprogramm-EinstellungenARead-onlyInspect
Für „Wie richte ich mein Postfach im iPhone/Outlook ein?“. Liefert die Servereinstellungen (IMAP/SMTP, Ports, Verschlüsselung, Benutzername) für eine Adresse der Domain, den Zertifikatshinweis und, falls die Mails der Domain bei einem anderen Anbieter ankommen, eine Warnung. Liefert nie ein Passwort; das Profil für iPhone/Mac gibt es im Panel (Reiter E-Mail → Auf Gerät einrichten). Nie ein Passwort nennen oder erfragen.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Die vollständige E-Mail-Adresse, z. B. info@example.com | ||
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which already declare readOnly and non-destructive), the description adds real behavioral value: it guarantees no password is ever returned, discloses a conditional warning when the domain's mail is hosted elsewhere, and states a security rule not to request passwords. No return-format or pagination detail, but for a read tool this is strong added context.
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?
The use case is front-loaded and the return contents are packed efficiently. Minor redundancy: the 'never a password' prohibition is stated twice (once informatively, once as an instruction), costing a bit of economy.
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?
With no output schema, the description carries the burden of explaining returns and does so well by enumerating server settings, the certificate note and the conditional warning. The only gap is that it does not clarify what the response looks like when settings are unavailable.
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 both parameters (domain, email) are already fully documented in the schema. The phrase 'für eine Adresse der Domain' hints that email must belong to domain, but adds no format or validation guidance beyond the schema. Baseline 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?
States a concrete verb (delivers) and enumerates the exact resources returned: IMAP/SMTP server settings, ports, encryption, username, certificate note and a provider-mismatch warning. This distinguishes it in substance from get_email_accounts or get_webmail_url, though it never names a sibling explicitly.
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 triggering question ('Wie richte ich mein Postfach im iPhone/Outlook ein?') and routes the iPhone/Mac profile case to the panel instead (Reiter E-Mail → Auf Gerät einrichten). Clear when-to-use context, but no named tool alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_statusE-Mail-Versandstatus anzeigenARead-onlyInspect
E-Mail-Versandstatus einer Domain abrufen (gesendet/gebounced/verzögert heute). Gezählt wird nur AUSGEHENDE Post dieser Domain — an sie zugestellte Mail erscheint nicht in diesen Zahlen. Stammt aus dem einmal täglich aktualisierten turbocheck-Bericht (Zeitstempel in der Antwort) — Ereignisse seit dem letzten Durchlauf fehlen noch. War das Mailprotokoll beim Berichtslauf nicht lesbar, sagt die Antwort das ausdrücklich und nennt keine Zahlen; das ist dann KEIN "nichts versendet". Die hängengebliebenen Mails kommen aus der Warteschlange und sind davon unabhängig.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial behavior beyond that: counting is limited to outgoing mail, data is refreshed only once per day, the response carries a timestamp, and an unreadable mail log at report time yields an explicit statement with no numbers rather than a misleading zero. That last point directly prevents a common misreading of the result.
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?
The purpose is front-loaded in the first clause, and the remaining sentences each carry a distinct caveat (outgoing-only counting, report staleness, failure mode, queue independence). It is somewhat dense and long for a one-parameter read tool, but no sentence is filler.
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?
With no output schema, the description carries the response burden and does so: it names the metrics (sent/bounced/deferred today), notes the timestamp field, and explains the failure response explicitly. Combined with the single documented parameter, an agent has everything needed to call it and interpret the result.
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?
There is a single parameter and schema description coverage is 100%, so the schema already documents 'domain' with an example. The description adds no further syntax, format, or constraint detail for the parameter, so the baseline 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?
States a specific verb and resource ('E-Mail-Versandstatus einer Domain abrufen') and immediately narrows scope to sent/bounced/deferred today. The clarification that only outgoing mail for that domain is counted distinguishes it from sibling listing tools like get_email_accounts or get_spam_filter without the agent needing to open another 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?
Gives clear context for when the data is meaningful: it comes from the once-daily turbocheck report, so events since the last run are absent, and stuck mails come from a separate queue. It does not explicitly name alternative tools (e.g. get_email_accounts) or state when not to use this one, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ftp_accountsFTP-Zugänge anzeigenARead-onlyInspect
FTP-Zugänge einer Domain auflisten (live von Plesk): den Hauptzugang des Abonnements (der Login aus der Willkommens-Mail — sein Passwort kann der Chat nicht zurücksetzen, es ist zugleich das SSH-Passwort und wird in Plesk geändert) und die zusätzlich angelegten Zugänge mit Startverzeichnis. Letztere liefern den Login, den reset_ftp_password braucht — Kunden kennen ihren FTP-Benutzernamen meist nicht auswendig. Dass es keine ZUSÄTZLICHEN Zugänge gibt, ist ein normaler Zustand, kein Fehler; ganz ohne FTP-Zugang ist eine Domain mit Abonnement nie.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description goes beyond that: it says the data is live from Plesk, notes that the main account's password cannot be reset by the chat and is also the SSH password, and clarifies that an empty additional-accounts list is not an error. This is meaningful operational context not present in structured fields.
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?
The description is front-loaded with the core action, but it is fairly long for a single-parameter read tool and packs three distinct ideas (account types, password reset caveat, expected-empty state) into one dense paragraph. It is informative but not optimally tight.
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 read with one fully documented parameter and read-only annotations, the description covers the important behavioral nuances: what is returned, what can't be done with it, and what constitutes a normal result. Without an output schema, it sufficiently signals the shape of the return data (main account + additional accounts with start directory).
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 'domain' parameter is fully documented in the schema. The description implies the domain scoping but adds no format, syntax, or semantic detail beyond what the schema provides. Baseline 3 is appropriate.
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?
Specific verb (auflisten) + resource (FTP-Zugänge einer Domain) with a clear scope split: the subscription's main account versus additionally created accounts with start directory. It is distinguishable from siblings like get_email_accounts or get_databases.
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 explicitly names reset_ftp_password as the downstream consumer and explains why the list is needed (customers don't remember their FTP usernames). It also sets an expectation that 'no additional accounts' is a normal state, which prevents wasted follow-up. No explicit when-not-to-use is given, but the routing to a sibling is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hosting_packagesHosting-Pakete anzeigenARead-onlyInspect
Listet die bei turbopress verfügbaren Hosting-Pakete mit Preis und Kurzbeschreibung (öffentlicher Produktkatalog, unabhängig vom eigenen Vertrag).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds what the data represents (public catalog, not tied to the account's own contract) and what fields come back (price, short description), going slightly beyond the annotations.
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 compact sentence that front-loads the action and resource before the clarifying parenthetical. Every clause carries information; nothing is redundant.
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 parameterless read-only listing tool with no output schema, the description supplies enough: what is listed and which fields are included. It could be slightly stronger by noting there is no input or filtering, but nothing essential 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 tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly implies no filtering inputs are required.
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 gives a specific verb (Listet) and resource (Hosting-Pakete) and even scopes the payload (Preis und Kurzbeschreibung). The parenthetical clarifying that it is the public product catalog, independent of the user's own contract, cleanly separates it from related siblings like prepare_hosting_order.
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?
The phrase 'öffentlicher Produktkatalog, unabhängig vom eigenen Vertrag' implies the usage context (browsing offerings before ordering), but there is no explicit when-to-use or when-not-to-use statement and no named alternative such as prepare_hosting_order. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotlink_protectionHotlink-Schutz anzeigenARead-onlyInspect
Liest den Hotlink-Schutz EINER Domain (live aus dem Hosting-System): ob er an ist, welche Dateiendungen geschützt sind und welche Fremddomains trotzdem einbinden dürfen. Das lesende Gegenstück zu set_hotlink_protection und der einzige Weg, eine Änderung daran nachzuprüfen. Vor jedem Setzen sinnvoll, weil eine angegebene Liste die bisherige ERSETZT: Hier steht, was mitgeschickt werden muss, damit nichts verschwindet. Die Domain wird serverseitig gegen die Verträge genau dieses Kunden gehalten — eine fremde wird abgewiesen, bevor irgendetwas gelesen wird. Zwei Dinge sind beim Weitergeben wichtig: (1) Das Hosting-System gibt seine Antwort doppelt aus; nennen die beiden Hälften für ein Feld UNTERSCHIEDLICHE Werte, meldet die Antwort das als widersprüchlich und nennt bewusst keinen Wert — dann auch selbst keinen raten. (2) Eine LEERE Liste ("keine Einträge") und ein NICHT GELESENES Feld sind zwei verschiedene Auskünfte: Was die Antwort als "nicht gelesen" meldet, heißt nicht "leer" und nicht "aus", und darf dem Kunden nicht so weitergegeben werden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, but the description adds substantial behaviour beyond them: server-side validation of the domain against this customer's contracts with rejection of foreign domains before anything is read, the duplicated-response contradiction handling (report contradictory, deliberately return no value, never guess), and the empty-list vs not-read distinction that must not be misreported to the customer.
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?
Longer than typical, but front-loaded with purpose and the set_hotlink_protection relationship before the edge cases. The two numbered caveats are dense yet each carries actionable output-interpretation information; a small amount of phrasing could be tightened, but nothing is filler.
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?
With no output schema in play, the description carries the full burden and does so: it describes the returned fields, the contradiction case where no value is given, and the crucial distinction between an empty list and an unread field. An agent has everything needed to call it and to relay the result correctly.
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?
With 100% schema coverage on a single parameter, the baseline is 3, but the description adds real constraint semantics: the domain is validated server-side against exactly this customer's contracts and a foreign domain is rejected before any read occurs. That meaning is not derivable from the schema's bare 'Die Domain, z. B. example.de' example.
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 ('Liest den Hotlink-Schutz EINER Domain') and enumerates exactly what is returned: on/off state, protected file extensions, and exempt foreign domains. It explicitly positions itself against the sibling set_hotlink_protection as its read counterpart, so an agent can distinguish the two without opening either 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?
Gives explicit when-to-use guidance ('Vor jedem Setzen sinnvoll'), names the alternative (set_hotlink_protection), and explains why: a supplied list replaces the existing one, so this read reveals what must be sent along to avoid data loss. It also states this is 'der einzige Weg, eine Änderung daran nachzuprüfen', covering the verification use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoicesRechnungen anzeigenARead-onlyInspect
Rechnungen des Kunden abrufen. Die Liste ist bewusst ein Ausschnitt: ALLE offenen Rechnungen (Unpaid, Payment Pending, Collections; höchstens 100) und zusätzlich die 25 neuesten abgeschlossenen (bezahlt, storniert, erstattet, Entwurf) — ältere abgeschlossene Rechnungen fehlen in der Liste. Die Antwort nennt deshalb immer die Gesamtzahl aller Rechnungen sowie Anzahl und Summe GETRENNT für offen und bezahlt; diese Zahlen gelten für den gesamten Bestand. Fragen nach Gesamtbeträgen ("wie viel habe ich bezahlt?", "was ist noch offen?") ausschließlich aus diesen Summen beantworten und niemals die aufgelisteten Zeilen aufaddieren. Storno, Erstattung und Entwurf stehen nur mit ihrer Anzahl da, weil eine Summe über gemischte Status nichts aussagt. Rechnungen ohne Rechnungsnummer werden mit ihrer Beleg-ID genannt; unter dieser ID findet der Kunde sie im Kundencenter wieder. Entwürfe sind noch nicht gestellte Rechnungen und nicht zu zahlen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), yet the description adds substantial behavioral context the agent could not otherwise know: the list is deliberately truncated (max 100 open, 25 newest completed, older completed ones absent), totals/counts/sums in the response cover the entire inventory, and drafts are unissued and not payable.
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?
Purpose is front-loaded and most sentences carry distinct, necessary information about truncation and aggregation. It is slightly verbose and repeats the 'entire inventory' caveat twice, which is the only real padding.
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?
With no output schema, the description fully carries the burden of explaining return values: totals, split counts and sums, status semantics, and the ID fallback. Nothing an agent needs to call and interpret this zero-parameter read tool 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 tool takes zero parameters, so the baseline is 4. The description instead clarifies response semantics (separate counts and sums for open vs. paid, document-ID fallback for invoices without a number), which compensates for the absent output schema.
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 ('Rechnungen des Kunden abrufen') and immediately delimits scope: all open invoices plus the 25 newest completed ones. No sibling tool in the list covers invoices, so an agent can place it unambiguously.
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?
Gives clear operational guidance on how to answer amount questions ('ausschließlich aus diesen Summen beantworten und niemals die aufgelisteten Zeilen aufaddieren') and explains why some statuses appear only as counts. It does not, however, name a competing tool or state explicit when-not-to-use conditions, though none exist among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outdated_pluginsVeraltete Plugins anzeigenARead-onlyInspect
Listet WordPress-Plugins und -Themes mit verfügbarem Update (Version aktuell → verfügbar) — gelesen direkt auf der Installation und deshalb auch unmittelbar nach einem gerade ausgeführten Update richtig. Genauer als der reine Zähler aus get_wordpress_status — zeigt konkret, welche Plugins/Themes betroffen sind. Jeder Eintrag nennt den Anzeigenamen; der Slug steht in Klammern dabei, KANN ABER FEHLEN (null) — dann liess sich der vom Plugin gemeldete Slug nicht gegen das erwartete Zeichenmuster bestätigen, und dieser Eintrag ist für update_wordpress_item/set_wordpress_plugin_state nicht nutzbar. An update_wordpress_item und set_wordpress_plugin_state gehört IMMER der Slug, nie der Anzeigename — er lässt sich aus dem Namen auch nicht ableiten.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context: data is read directly on the installation and is therefore accurate immediately after an update, and the slug field may be null with a stated cause and consequence. This goes well beyond the annotation surface.
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?
Purpose is front-loaded and every clause carries information, but the null-slug explanation and the repeated emphasis on slug-vs-display-name make it longer than strictly necessary. Dense rather than wasteful, so a 4.
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?
There is no output schema, so the description carries the full return-value burden and does so: each entry has a display name, a slug in parentheses that may be null, and the reason and downstream consequence of that null. Nothing needed to call or interpret the tool 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 description coverage is 100% with a single documented 'domain' parameter, so the schema already carries the parameter semantics. The description adds nothing about the domain argument itself. Baseline 3 is appropriate when the schema does the heavy lifting.
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: lists WordPress plugins and themes that have an available update, including the current→available version transition. It explicitly differentiates itself from the sibling get_wordpress_status by calling that tool's output only a bare counter. An agent can distinguish it from get_wordpress_sites and get_wordpress_status without opening any 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?
Explicitly routes the agent: use this instead of get_wordpress_status when the concrete affected plugins/themes matter. It also gives downstream usage rules — the slug goes to update_wordpress_item/set_wordpress_plugin_state, never the display name — and states a when-not condition (entries whose slug is null cannot be fed to those tools). When-to-use, alternatives, and exclusions are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_alertsPerformance-Warnungen anzeigenARead-onlyInspect
Beantwortet "hat die Überwachung zuletzt etwas gemeldet?" — die OFFENEN Warnungen der laufenden turbometrics-Überwachung (z. B. TTFB über der Schwelle, visuelle Regression, fehlgeschlagener Scan), also Ereignisse über die Zeit, keine Momentaufnahme und keine Messwerte. Die Zahlen einer Messung stehen in get_performance_findings, der zwischengespeicherte Gesamtwert in get_performance_score. Eine leere Liste wird nicht pauschal als Entwarnung ausgegeben: Die Antwort unterscheidet "überwacht, nichts offen", "Domain wird gar nicht überwacht" und "nicht ermittelbar".
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint, destructiveHint=false), so the bar is lower. The description still adds real value beyond them: it explains that an empty list has three distinct meanings ('monitored, nothing open', 'domain not monitored at all', 'not determinable'), which prevents a false all-clear. It does not mention auth, rate limits, or pagination, so it stops 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?
Front-loaded with the core question and resource, then sibling routing, then the empty-list caveat — a logical progression with no filler sentences. Dense but every sentence earns its place; the illustrative examples cost a little length but add clarity.
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 read-only, single-parameter tool with no output schema, the description supplies exactly the missing context: what the returned events represent and how to interpret an empty result. Nothing an agent needs to call and interpret this tool correctly is absent.
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?
Only one parameter (domain) with 100% schema description coverage, so the schema already carries the parameter meaning. The description adds nothing about the domain argument beyond what the schema states, so the baseline 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?
Names a specific resource (the OPEN alerts of the running turbometrics monitoring) and verb-like framing ('has monitoring reported anything?'), with concrete examples (TTFB over threshold, visual regression, failed scan). It explicitly distinguishes itself from the two sibling tools get_performance_findings and get_performance_score by stating that it returns events over time, not measurements or snapshots.
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?
Routes the agent explicitly: raw measurement numbers live in get_performance_findings, the cached aggregate in get_performance_score. The opening question frames the use case (checking whether monitoring has flagged anything recently) so the agent knows when to reach for this tool versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_findingsPerformance-Befunde anzeigenARead-onlyInspect
Beantwortet "was genau bremst meine Seite?" — die Einzelbefunde des ZULETZT TATSÄCHLICH GELAUFENEN turbometrics-Scans, mit Handlungsempfehlung je Punkt (Bilder, JS-Last, Caching, Server-Antwortzeit) und dem Gesamtwert eben dieses Scans. Die Scanliste wird dafür im Moment der Abfrage gelesen, ein über start_performance_scan angestoßener Lauf erscheint hier also als erstes; der zwischengespeicherte Wert aus dem nächtlichen Bericht steht dagegen in get_performance_score, weshalb beide Zahlen auseinanderliegen können. Kennt turbometrics die Domain nachweislich nicht, sagt die Antwort das als fehlende Aktivierung. Ließ sich das nicht ermitteln, sagt sie GENAU DAS — ein solcher Messausfall ist weder "nicht aktiviert" noch eine Entwarnung. Offene Warnungen aus der laufenden Überwachung: get_performance_alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds meaningful behavioral context beyond them: the scan list is read at query time, and it disambiguates three response states — missing activation, measurement failure, and real data — stressing that a failure is neither 'not activated' nor an all-clear. No contradiction with the annotations.
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?
It opens with the user-facing question it answers and front-loads the core behavior before the sibling routing and edge cases. It is dense and slightly heavy on emphasis ('ZULETZT TATSÄCHLICH GELAUFENEN', 'GENAU DAS'), but each sentence carries a distinct behavioral nuance rather than filler.
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?
With no output schema, the description carries the burden of explaining what comes back (individual findings, recommendations, overall scan value) and does so, plus it covers the ambiguous outcome states an agent must interpret. Nothing needed to call and interpret the tool 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?
There is only one parameter (domain) and schema description coverage is 100%, so the schema already carries the semantics. The description adds no domain format or syntax detail beyond the schema's own example 'example.com', making this the baseline case where structured data does the work.
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 verb+resource: the individual findings of the last actually-run turbometrics scan, with per-item recommendations (images, JS load, caching, server response time) plus that scan's overall score. It is unmistakably distinct from get_performance_score (cached nightly value) and get_performance_alerts (open monitoring warnings).
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 explicitly names the alternatives and the condition for each: a run triggered via start_performance_scan shows up here first, the cached nightly value lives in get_performance_score, and open warnings belong to get_performance_alerts. It even explains why the two numbers can diverge, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_scorePerformance-Bewertung anzeigenARead-onlyInspect
Beantwortet "wie ist mein Wert?" mit EINER Zahl je Bereich (Gesamt, Speed, Bilder, Caching, WordPress, Technik, Time-to-First-Byte). Quelle ist ausschließlich der einmal täglich erstellte turbocheck-Bericht, nicht turbometrics selbst: die Antwort nennt den Berichtsstand UND den Zeitpunkt des darin enthaltenen Scans, und beide liegen regelmäßig einen Tag auseinander. Ein über start_performance_scan angestoßener Lauf steht hier erst nach dem nächsten nächtlichen Durchlauf. Wer den zuletzt wirklich gelaufenen Scan will, nimmt get_performance_findings — dessen Zahl kann deshalb von dieser abweichen, ohne dass eine der beiden falsch ist. Fehlt der Wert, meldet die Antwort einen fehlenden Messwert: das ist KEINE Aussage über die Geschwindigkeit und kein Beleg, dass nie gescannt wurde.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds substantial context beyond that: the data-source restriction (daily turbocheck report, not turbometrics), the report-date vs scan-timestamp staleness gap of about a day, the write-to-read latency for triggered scans, and the meaning of a missing value (not a speed statement, not proof of never being scanned).
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?
Front-loaded with the answer to 'what is my value?' and every sentence carries distinct semantics (source, staleness, alternative, missing-value caveat). It is somewhat long and dense for a one-parameter tool, with heavy capitalization, but no sentence is pure filler.
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?
With no output schema, the description carries the full burden and does so: it names the returned metric areas, the two timestamps returned, the staleness relationship, and how a missing measurement is reported. An agent has everything needed to call and interpret this tool correctly.
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 there is a single required 'domain' parameter already well documented in the schema. The description explains the returned areas but adds no syntax or format detail for the domain input beyond what the schema provides, so the baseline 3 is correct.
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: it returns ONE number per area (Overall, Speed, Images, Caching, WordPress, Technik, TTFB) and explicitly scopes the source to the daily turbocheck report. It distinguishes itself from siblings get_performance_findings and start_performance_scan by name, so an agent can route without opening schemas.
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 guidance: describes when a score is available (only after the nightly run), when it is NOT the right choice (a run just triggered via start_performance_scan will not appear here), and names the alternative (get_performance_findings) with the condition that selects it. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_php_versionsPHP-Versionen anzeigenARead-onlyInspect
Liest für EINE Domain die eingestellte PHP-Version und die Versionen, die auf ihrem Server wählbar sind (live aus dem Hosting-System). Das lesende Gegenstück zu switch_php_version — und der Weg, die Frage "Welche PHP-Versionen gibt es?" zu beantworten. Die wählbaren Werte ("8.4") sind genau die, die switch_php_version annimmt. Meldet die Antwort einen Wert als nicht lesbar, heißt das nicht "keine" — dann nichts raten und keinen Wechsel zum Ausprobieren anstoßen. Die PHP-Grenzen (limits) kommen aus dem Tarif. Die Werte gibt der Tarif vor; für Änderungen an den Support wenden. Die wirksame Upload-Grenze ist der kleinere Wert aus upload_max_filesize und post_max_size.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered; the description still adds real value: values are fetched live from the hosting system, returned values are exactly the accepted inputs of switch_php_version, unreadable values are not 'none', and limits derive from the tariff. That is behavioral context an agent cannot get from the annotations or schema.
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?
The core purpose and the sibling routing come first, then the fallback warning and field semantics. It is somewhat long at seven sentences, and the closing note on upload_max_filesize vs post_max_size sits at the tail where it is easy to skim past, but no sentence is pure filler.
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?
With no output schema, the description carries the burden of explaining returns and does so: current version, selectable versions, tariff-derived limits, effective upload limit, and how to interpret an unreadable value. It stops short of describing the actual response shape or whether selectable versions are ordered, a minor remaining gap for a single-parameter read tool.
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% with one required 'domain' parameter, so the baseline is 3. The description only reinforces the scoping constraint ('EINE Domain', i.e. one domain per call, not a batch) and adds no format or validation detail beyond the schema's example.
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 ('liest für EINE Domain die eingestellte PHP-Version und die Versionen, die auf ihrem Server wählbar sind') and immediately names the sibling 'switch_php_version' as its write counterpart, plus the user question it answers. An agent can distinguish it from all 100+ siblings 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?
Explicitly frames the tool as the read counterpart to switch_php_version and the correct answer path for 'Welche PHP-Versionen gibt es?'. It also gives an exclusion-style rule: if a value is reported unreadable, do not guess and do not trigger a switch to probe — which prevents a concrete misuse of the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_statusSicherheitsstatus anzeigenARead-onlyInspect
Sicherheitsstatus einer Domain abrufen (Malware-Funde, Schwachstellen, offen erreichbare Dateien). Stammt aus dem einmal täglich aktualisierten turbocheck-Bericht (Zeitstempel in der Antwort) — "keine Funde" bedeutet nur, dass der letzte Bericht nichts gefunden hat, nicht dass gerade aktiv geprüft wurde. Für den Härtungsstand von WordPress selbst stattdessen get_wordpress_hardening verwenden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnly/non-destructive, the description adds genuinely new behavioral context: the data comes from a once-daily turbocheck report, the timestamp is in the response, and "keine Funde" only means the last report found nothing rather than that a scan is running now. That staleness disclosure is exactly the kind of trait annotations cannot express.
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?
Front-loads the purpose, then the provenance/staleness caveat, then the alternative. Each sentence carries a distinct, decision-relevant fact — the parentheses compact the coverage list instead of padding it, and nothing is redundant.
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?
With no output schema, the description compensates by naming the returned finding categories and noting the response carries a timestamp. Combined with the read-only annotations and the single fully-documented parameter, an agent has everything needed to call this correctly and to interpret a clean result.
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 description coverage is 100% and the single "domain" parameter is already documented in the schema ("Die Domain, z. B. example.com"). The description only refers to "einer Domain" generically and adds no format, validation, or scope detail beyond the schema, so the baseline 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?
States a specific verb and resource ("Sicherheitsstatus einer Domain abrufen") and enumerates exactly what it covers — malware findings, vulnerabilities, publicly reachable files. It names a sibling (get_wordpress_hardening) as the tool for a related-but-different concern, so an agent can separate the two without opening either 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?
Gives a clear routing rule: for the hardening state of WordPress itself, use get_wordpress_hardening instead. It also frames when the result should be trusted via the daily-report caveat. It stops short of positioning this against the other security-adjacent siblings (get_dns_security, scan_wordpress_vulnerabilities, get_ssl_status), so coverage is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spam_filterSpamfilter anzeigenARead-onlyInspect
Liest die Spamfilter-Einstellung EINES Postfachs (live aus dem Hosting-System): ob der Filter an ist, ab welcher Punktzahl eine Nachricht als Spam gilt, was mit erkanntem Spam geschieht, die Kennzeichnung im Betreff und die Sperr-/Freigabelisten. Das lesende Gegenstück zu set_spam_filter und der einzige Weg, eine Änderung daran nachzuprüfen. Anzugeben ist die Domain und die Adresse des Postfachs; sie wird serverseitig gegen die Postfächer genau dieses Hosting-Pakets gehalten — eine geratene oder fremde Adresse wird abgewiesen, bevor irgendetwas gelesen wird. Zwei Dinge sind beim Weitergeben wichtig: (1) Was mit Spam geschieht, gibt das Hosting-System ANDERS aus, als es gesetzt wird; die Antwort übersetzt das für die gemessenen Fälle und benennt einen unbekannten Wert ausdrücklich als nicht deutbar — dann diesen Wert dem Kunden nennen und NICHT auslegen. (2) Meldet die Antwort einen Punkt als "nicht gelesen", heißt das nicht "leer" und nicht "aus" — es konnte nur nichts ermittelt werden, und genau so gehört es dem Kunden gesagt.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Das Postfach — die volle Adresse (z. B. info@example.de) oder nur der lokale Teil (z. B. "info"). Muss ein Postfach DIESER Domain sein; die Schreibweise zeigt get_email_accounts. | ||
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnlyHint, destructiveHint=false, openWorldHint=false), yet the description adds substantial behavior beyond them: server-side validation rejects a guessed or foreign address before anything is read, the spam-action value is emitted in a different form than it is set, and a 'not read' field must not be confused with 'empty' or 'off'. These are non-obvious output behaviors an agent would not infer from annotations.
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?
Well front-loaded: purpose, then sibling relationship, then parameters, then the two interpretation caveats. The caveats are long but earn their place by preventing misreporting, though the parameter-restriction sentence partly duplicates the schema and adds a little length.
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?
With no output schema, the description carries the full burden of return-value semantics and does so: it explains the translated spam-action value, the explicit 'undecipherable' value, and the 'not read' ambiguity so the agent can relay results correctly. Complete for a two-parameter read tool.
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 both parameters are already documented (email accepts full address or local part, must belong to this domain). The description largely restates the domain/email requirement and adds the server-side ownership check, but contributes little syntax or format detail beyond the schema, so the baseline 3 is appropriate.
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 (reads the spam-filter setting of ONE mailbox, live) and enumerates exactly what is returned: on/off, spam threshold score, spam action, subject tagging, and block/allow lists. It explicitly names and distinguishes itself from set_spam_filter as its read counterpart, so an agent can separate the two without opening either 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?
Names the sibling alternative (set_spam_filter) and gives a concrete use context ('the only way to verify a change to it'), plus the prerequisite that domain/email must belong to this hosting package. Clear when-to-use, though it offers no explicit when-not-to-use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ssl_statusSSL-Status anzeigenARead-onlyInspect
SSL-Zertifikatsstatus einer Domain live prüfen (echter TLS-Handshake, kein Cache): Aussteller, abgedeckte Namen (SANs) und verbleibende Gültigkeit. Ob Auto-Renew konfiguriert ist, kann nicht ermittelt werden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint, so the safety profile is covered. The description adds real value beyond that by disclosing that this is a live TLS handshake with no caching and, notably, that auto-renew configuration cannot be determined – a useful negative-capability statement.
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?
Two sentences, front-loaded with the core action and mechanism, followed by the return fields and a limitation. No filler; every clause earns its place.
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 single-parameter, read-only tool with no output schema, the description supplies the operation type, the live-check behavior, the returned fields, and an explicit limitation. Nothing needed to invoke 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 description coverage is 100%, so the single 'domain' parameter is already documented with an example. The description adds no syntax or format detail beyond what the schema provides, so 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?
States a specific verb (live prüfen) and resource (SSL-Zertifikatsstatus einer Domain) and enumerates the exact outputs: issuer, SANs, remaining validity. This clearly distinguishes it from siblings like create_ssl_certificate or get_dns_security without opening either 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?
The description conveys the character of the operation ('live prüfen, echter TLS-Handshake, kein Cache'), which implies when this tool is appropriate, but it never names an alternative or states an exclusion. With many sibling status/security tools, no routing guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storage_breakdownSpeicherbelegung aufschlüsselnARead-onlyInspect
Aufschlüsselung des belegten Speicherplatzes einer Domain: Gesamtbelegung gegen die Quota (live aus Plesk), Aufteilung nach Posten (Web-Dateien, Datenbanken, Mailboxen, Logs) sowie alle Datenbanken mit Größe und Overhead. Beantwortet "Was frisst meinen Speicherplatz?" — für die reine Frage "Wie voll ist es?" reicht get_webspace_usage.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: data is live from Plesk, and the result includes quota comparison, category breakdown, and per-database size/overhead. It does not cover auth, rate limits, or error behavior, so it is strong but not exhaustive.
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?
The description is front-loaded with the core breakdown, then lists the components, then the use-case framing and alternative. It is compact and every sentence contributes to tool selection or output expectation.
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?
With no output schema, the description adequately explains what the tool returns: total vs quota, category allocation, and database sizes/overhead. Combined with the rich annotations and fully documented single parameter, an agent has enough information to call this tool correctly.
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 description coverage is 100%, and the single 'domain' parameter is documented with an example. The description reinforces that the breakdown is per-domain but adds no syntax, format, or constraint beyond what the schema already provides, so the baseline 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 operation: breaking down a domain's used storage into total vs quota, item categories (web files, databases, mailboxes, logs), and database sizes with overhead. It explicitly distinguishes itself from the sibling get_webspace_usage by naming the simpler question that sibling answers.
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 gives explicit when-to-use guidance with an example question ('Was frisst meinen Speicherplatz?') and an explicit alternative for the simpler case: for 'Wie voll ist es?' use get_webspace_usage. This is exactly the routing information an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_support_ticketsSupport-Tickets anzeigenARead-onlyInspect
Eigene Support-Tickets auflisten (zeigt max. die letzten 20 Tickets), oder mit ticket_id den vollen Thread eines einzelnen Tickets abrufen. ticket_id bezieht sich auf die in der Liste angezeigte interne "Ticket-ID", NICHT auf die kundensichtbare Ticketnummer (#12345).
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | No | Die in der Ticketliste angezeigte interne Ticket-ID (nicht die Ticketnummer) für die Detailansicht |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: results are limited to the last 20 tickets and the scope is the caller's own tickets. It does not mention ordering beyond recency or pagination, which are minor gaps given the annotation coverage.
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?
Two sentences, no filler. The operating mode is stated first and the high-risk disambiguation (internal ID vs. #12345) is placed last where it is most likely to be read before invocation.
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 single optional parameter and no output schema, the description covers both invocation modes and the 20-item cap, which is enough to call it correctly. Only minor gaps remain (ordering, whether closed tickets are included), and no output schema exists to make return-value details necessary.
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 schema already says ticket_id is the internal ID, so the baseline is 3. The description goes further by contrasting it against the customer-facing ticket number with a concrete example (#12345), which is exactly the confusion this parameter invites.
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?
Names a specific verb (auflisten/abrufen) and resource (Support-Tickets) and explicitly describes the two modes of operation: a capped list of own tickets, or a full single-ticket thread when ticket_id is passed. Sibling read tools (close_support_ticket, reply_to_ticket, create_support_ticket) are writes, so this read-only surface is easy to separate.
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?
The description clearly states the condition that selects each mode: omit ticket_id to list, pass ticket_id to get the full thread. No explicit 'when not to use' or named alternative tool is given, but the branch logic is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webmail_urlWebmail-Link abrufenARead-onlyInspect
Bildet die Webmail-Zugangsadresse einer Domain nach dem üblichen Schema (https://webmail./). Das ist keine Messung: Es wird nicht geprüft, ob der Host im DNS existiert oder ein gültiges Zertifikat hat — bei externem DNS ohne webmail-Eintrag kann die Adresse im Browser nicht auflösen.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, closed-world profile, but the description adds real behavioral context beyond them: no DNS existence check, no certificate validation, and a concrete failure mode (external DNS without a webmail record yields a non-resolving URL). It does not address caching or whether the result is ever persisted, keeping it 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?
Two dense sentences with zero waste: the purpose is front-loaded, followed immediately by the critical non-measurement caveat and its consequence. Every clause earns its place.
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 one-parameter, read-only tool with no output schema, the definition covers what it returns, that it is constructed rather than verified, and the failure case. It stops short of noting that some hosts use alternative webmail hostnames, but is otherwise sufficient to call correctly.
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 description coverage is 100% for the single 'domain' parameter, so the schema already documents it. The description adds the substitution template (webmail.<domain>), which shows how the value is used, but nothing about accepted formats or subdomain handling beyond what the schema implies.
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 concrete verb+resource: it constructs the webmail access URL for a domain using the conventional https://webmail.<domain>/ pattern. The explicit 'Das ist keine Messung' clause pre-empts confusion with validation-type siblings, though no sibling is named directly.
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?
Usage is implied rather than stated: the description tells you it produces a link, and the caveat about external DNS implies this is a convenience builder, not a checker. There is no explicit 'use this when / use X instead' routing to siblings such as get_email_status or check_domain_availability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_website_reportWebsite-Bericht abrufenARead-onlyInspect
Zusammenfassenden turbocheck-AI-Statusbericht (Fließtext mit allen Findings) für eine Domain abrufen. Stammt aus dem einmal täglich aktualisierten turbocheck-Bericht (Zeitstempel in der Antwort) — der Bericht beschreibt den Stand des letzten Durchlaufs, nicht den Moment der Abfrage; eine Veränderung von heute früh steht noch nicht darin. Für gezielte Fragen zu Backup, WordPress, Sicherheit, DNS oder Performance stattdessen die jeweiligen spezialisierten Tools verwenden (get_backup_status, get_wordpress_status, get_security_status, get_dns_security, get_performance_score, get_storage_breakdown).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context: the report comes from a once-daily snapshot with a timestamp in the response, and today's early changes are not yet reflected — important for interpreting staleness.
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?
Front-loaded with what the tool returns, then the staleness caveat, then the routing alternatives. Two sentences do real work, though the staleness sentence is fairly long and slightly verbose in German.
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 single-parameter read-only report tool with no output schema, the description covers what is returned (prose findings), where the data comes from (daily snapshot with timestamp), and when to prefer other tools — nothing an agent needs 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 description coverage is 100% with a single documented 'domain' parameter, so the schema carries the semantics. The description adds no format or syntax detail beyond what the schema provides, making 3 the appropriate baseline.
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 ('abrufen') and resource ('zusammenfassenden turbocheck-AI-Statusbericht ... für eine Domain') and clarifies the scope is the full prose report with all findings, which distinguishes it from the narrower siblings it names.
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?
Explicitly routes the agent: for targeted questions about backup, WordPress, security, DNS or performance, use the named specialized tools instead, listing them by name. Both the use-when and the use-otherwise conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webspace_usageSpeicherplatz-Nutzung anzeigenARead-onlyInspect
Speicherplatz-, Traffic- und Postfach-Nutzung einer Domain direkt von Plesk abrufen. Hinweis: Plesk aktualisiert diese Statistik nur etwa einmal täglich, der Wert kann also bis zu 24 Stunden alt sein — nicht in Echtzeit.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description meaningfully adds that Plesk refreshes this statistic only about once a day, so values can be up to 24 hours stale and are not real-time — a genuinely useful freshness caveat beyond what annotations provide.
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?
Two sentences, zero waste: the purpose is front-loaded and the freshness caveat follows. Every sentence earns its place and nothing is redundant.
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 read-only, single-parameter tool with full schema coverage and no output schema, the description is nearly complete: it identifies the returned metrics and the staleness behavior. It lacks only routing guidance against overlapping siblings like get_storage_breakdown.
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 description coverage is 100% (the 'domain' parameter is fully documented with an example), so the schema does the heavy lifting. The description adds no extra meaning about the parameter beyond confirming the scope is a single domain, so the baseline of 3 is appropriate.
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 names a specific verb (abrufen) and concrete resource scope (Speicherplatz-, Traffic- und Postfach-Nutzung einer Domain). It clearly conveys what the tool returns, though it does not distinguish itself from the sibling get_storage_breakdown, which an agent might confuse it with.
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?
Usage is only implied: an agent can infer this is for checking a domain's disk/traffic/mailbox consumption, but there is no explicit when-to-use statement and no mention of when to prefer get_storage_breakdown or get_website_report instead. No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wordpress_backupsWordPress-Backups anzeigenARead-onlyInspect
Listet vorhandene On-Demand-WordPress-Backups (über WP Toolkit) — eigenständig von den nächtlichen Server-Backups, die der Kunde im WP-Cockpit sieht und die der Support auf Anfrage wiederherstellt. Ein Backup HERUNTERLADEN kann dieses Werkzeug nicht und es gibt dafür auch keines: Der Download geht nur im WP-Cockpit im Kundenbereich (Hosting-Paket, Reiter „WordPress“, Karte „Backups“, „Herunterladen“), nicht in Plesk — nenne dem Kunden diesen Weg. Meldet klar, wenn kein WordPress gefunden wurde.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description goes well beyond that by ruling out a download capability the name might imply, explaining where downloads actually happen, and distinguishing on-demand WP Toolkit backups from nightly server backups that support restores on request.
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?
Purpose and the backup-type distinction are front-loaded in the first sentence, with the download limitation following. The WP-Cockpit navigation detail is verbose but actionable for customer-facing replies, so it earns its place; the prose is still longer than strictly needed.
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 single-parameter read-only tool with no output schema, the description covers scope, alternatives, the major capability gap and the no-WordPress edge case. It does not hint at what the listing returns (names, dates, sizes), which would help the agent reason about results, but that is a small gap.
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?
Single required 'domain' parameter with 100% schema description coverage ('Die Domain, z. B. example.de'), so the schema does the documentation work. The description adds nothing about the parameter itself, which is the expected baseline here.
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?
First sentence names a specific verb and resource (on-demand WordPress backups via WP Toolkit) and draws an explicit boundary against the nightly server backups the customer sees elsewhere. An agent can separate this from create_wordpress_backup, restore_wordpress_backup and get_backup_status without opening any 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?
Gives explicit when-to-use scope, an explicit when-not (downloading is impossible, there is no tool for it), and routes the customer to the WP-Cockpit path with concrete navigation steps. It also tells the agent what to do in the empty-result case (report clearly that no WordPress was found).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wordpress_hardeningWordPress-Härtung anzeigenARead-onlyInspect
Zeigt, welche der von WP Toolkit angebotenen Härtungsmaßnahmen auf einer WordPress-Installation gesetzt sind und welche fehlen — mit Klartext-Titel, ob die Maßnahme als kritisch gilt und ob sie sich zurücknehmen lässt. NICHT zu verwechseln mit get_security_status: jenes liefert Malware-Funde und offen erreichbare Dateien aus dem nächtlichen turbocheck-Bericht, dieses den Härtungsstand von WordPress selbst.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false, destructiveHint=false), so the bar is lower. The description still adds real context beyond them: it enumerates what the response contains (plain-text title per measure, whether the measure counts as critical, whether it can be reverted) and identifies the data provenance. Minor gap: no mention of pagination or ordering, though none is implied.
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?
Two sentences, no filler. The core action and the scope are front-loaded, and the disambiguation against the sibling follows immediately where it is most useful.
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?
No output schema exists, so the description partially compensates by naming the returned fields (title, criticality, revertibility) and the set/missing distinction. It is sufficient to call the tool correctly; an explicit note on whether results are cached or how large the list can get is the only missing detail.
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 description coverage is 100% for both parameters, so domain and site_url are already documented in the schema (including the conditional case for site_url). The description adds no syntax or format detail beyond that, so the baseline 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?
States a specific verb (
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?
Explicitly names the confusion risk with sibling get_security_status and delineates the boundary: that tool returns malware findings and publicly reachable files from the nightly turbocheck report, whereas this one returns WordPress's own hardening posture. That is an explicit when-not/alternative routing statement, not inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wordpress_overviewWordPress-Übersicht aller Sites anzeigenARead-onlyInspect
Zeigt ALLE WordPress-Sites des Kontos auf einmal mit ihrem Update-Stand (offene Plugin-Updates, WordPress-Update, automatische Updates, Paket). Die Zahlen stammen aus dem Nachtbericht und tragen dessen Stand (Zeitpunkt in der Antwort) — sie sind kein Livewert; der Auftrag von start_bulk_wordpress_update liest die offenen Updates je Site vor dem Einspielen frisch. Ein nicht gemessener Wert steht als „nicht gemessen“, nie als 0. Der richtige Einstieg bei „aktualisiere alle meine Sites“; für die genauen Plugins einer einzelnen Domain get_outdated_plugins verwenden.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as a safe read, but the description adds genuinely non-obvious behavior: the figures come from a nightly report with a timestamp rather than being live, and unmeasured values are reported as 'nicht gemessen' rather than 0 — a critical detail that prevents an agent misreading a sentinel as zero. It also discloses that start_bulk_wordpress_update re-reads fresh data before applying, which pre-empts a stale-data mistake. Not a 5 only because freshness/pagination mechanics across many sites (e.g. limits on site count) are not spelled out.
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?
Front-loaded with what the tool returns, then behavior, then sibling routing — a sensible order with no filler. It is dense (em dashes and semicolons pack several claims per sentence), which slightly reduces skimmability but every sentence carries information.
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?
No output schema exists, and the description fully compensates by enumerating the returned update fields and the timestamp on the data. Combined with the staleness caveat and the sibling pointers, an agent has everything needed to call this correctly and interpret the result.
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 tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly avoids redundant parameter talk and instead spends its words on scope and data provenance.
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 ('Zeigt ALLE WordPress-Sites des Kontos ... mit ihrem Update-Stand') plus the exact fields returned (offene Plugin-Updates, WordPress-Update, automatische Updates, Paket). It explicitly separates itself from get_outdated_plugins, so an agent can distinguish it from its closest sibling 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?
Gives an explicit trigger ('Der richtige Einstieg bei „aktualisiere alle meine Sites“') and names the alternative for a different intent (get_outdated_plugins for per-domain plugin detail). It also clarifies how it relates to start_bulk_wordpress_update, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wordpress_pluginsInstallierte Plugins und Themes anzeigenARead-onlyInspect
Das Werkzeug listet alle installierten Plugins und Themes einer WordPress-Installation mit Status (aktiv, inaktiv) und Version; steht für einen Eintrag ein Update an, nennt die Zeile auch die verfügbare Version. Gelesen direkt auf der Installation, also auch unmittelbar nach einer Änderung richtig. Das ist die richtige Quelle für Slugs zu delete_wordpress_item, set_wordpress_plugin_state und update_wordpress_item (get_outdated_plugins zeigt dagegen nur Einträge mit offenem Update). Der Slug steht in Klammern dabei, KANN ABER FEHLEN (null) — dann ist der Eintrag für die Folgewerkzeuge nicht nutzbar. An die Folgewerkzeuge gehört IMMER der Slug, nie der Anzeigename. Must-use-Plugins und Drop-ins sind nicht enthalten. Reines Lesen — es ändert nichts. Lässt sich die Liste nicht lesen, meldet die Antwort das als Fehler; daraus darf NIE „es ist nichts installiert“ werden. Bei mehreren WordPress-Installationen auf der Domain site_url angeben (siehe get_wordpress_sites).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen: welche gemeint ist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses important behavioral details: must-use plugins and drop-ins are excluded, slugs may be null and therefore unusable for follow-up tools, and a read failure must never be treated as 'nothing installed'. It also clarifies that the data is read directly from the installation and should be current immediately after changes.
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?
The purpose is front-loaded and most sentences carry necessary operational caveats, with little pure filler. The description is somewhat dense and semicolon-heavy, but the length is largely justified by the number of behavioral warnings it must convey.
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?
With no output schema, the description still covers the key return semantics: plugin/theme status, version, available update version, slug presence or null, and exclusions. It also covers the main failure mode and multi-site selection, leaving no critical gap for correct invocation.
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 both parameters are already documented in the schema. The description reiterates the site_url condition and adds a useful pointer to get_wordpress_sites, but it does not add syntax or format details beyond what the schema provides, so the baseline 3 is appropriate.
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 verb and resource: it lists all installed WordPress plugins and themes with status and version, and explicitly says when update information is included. It also distinguishes this tool from get_outdated_plugins, so an agent can select it 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?
It explicitly identifies the follow-up tools that need slugs from this result (delete_wordpress_item, set_wordpress_plugin_state, update_wordpress_item) and contrasts this with get_outdated_plugins, which only shows entries with pending updates. It also says when to pass site_url and points to get_wordpress_sites for multi-installation domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wordpress_sitesWordPress-Installationen anzeigenARead-onlyInspect
Listet die WordPress-Installationen, die zu einem Hosting gehören — mit Adresse, Version und Zustand. Das Werkzeug, das die Lücke schließt: Fast jedes andere WordPress-Werkzeug hier verlangt eine site_url, sobald es mehr als eine Installation gibt, und herausfinden ließ sich die bislang nirgends. Reines Lesen — es ändert nichts. Eine leere Liste ist eine abgerufene Auskunft ("hier läuft kein WordPress"); war die Liste dagegen nicht abrufbar, meldet die Antwort das ausdrücklich als Messausfall, und daraus darf NIE "es gibt kein WordPress" werden. Ein Eintrag, der als "antwortet derzeit nicht" gemeldet wird, ist NICHT gelöscht — die Installation steht weiter da. Felder, die das Hosting-System nicht mitliefert, werden als nicht mitgeliefert benannt und nicht ergänzt.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnlyHint, destructiveHint=false), yet the description adds substantial non-structured semantics: an empty list means 'no WordPress', whereas a failed retrieval must never be interpreted as absence, and an unreachable installation is not deleted. It also states that missing fields are reported as absent rather than fabricated. This is exactly the kind of behavioral context annotations cannot express.
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?
The core purpose and the site_url gap are front-loaded, but the empty-list vs. failure vs. unreachable distinctions, while valuable, are dense and repeated in emphasis (Wortwahl in Anführungszeichen, Großschreibung NIE), making it longer than necessary for a one-parameter getter.
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 complex discovery tool with no output schema, the description supplies the missing return-value semantics (empty vs. error vs. unreachable, and handling of absent fields) so an agent can interpret results correctly. No output schema exists, so explaining result semantics here is appropriate and complete.
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 parameter is self-documented with an example, so the baseline is 3; the description adds meaning by clarifying the domain scopes the result to a hosting's installations, reinforcing the parameter's role rather than just repeating it.
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 (listet die WordPress-Installationen) with stated fields (Adresse, Version, Zustand) and scope (die zu einem Hosting gehören). It also positions itself against siblings by noting that other WordPress tools require a site_url that previously could not be discovered — a concrete, differentiating role.
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?
Clearly signals when this tool is the entry point: whenever another WordPress tool would need a site_url that isn't yet known. It doesn't enumerate explicit exclusions (e.g., when to prefer get_wordpress_status or check_wordpress_integrity), but the prerequisite-discovery framing gives strong context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wordpress_statusWordPress-Status anzeigenARead-onlyInspect
WordPress-Status einer Domain abrufen (Version, Updates, Cache, Sicherheits-Flags). Stammt aus dem einmal täglich aktualisierten turbocheck-Bericht (Zeitstempel in der Antwort) — sehr aktuelle Änderungen fehlen ggf. noch.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context: the payload originates from a turbocheck report refreshed once daily, and a timestamp is included in the response, so the agent knows results can lag behind very recent changes.
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?
Two tight sentences: the capability and its returned facets come first, followed by the single caveat that governs interpretation of the result. Nothing is redundant or padded.
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 single-parameter read-only lookup with safety fully covered by annotations and no output schema, the definition supplies what is needed: what is returned and how fresh it is. It leaves only sibling routing unaddressed, which is a usage-guideline gap rather than a completeness one.
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 description coverage is 100% and there is only one parameter, whose format ('example.com') is already documented in the schema. The description adds no parameter-level meaning beyond that, so 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?
States a specific verb and resource ('WordPress-Status einer Domain abrufen') and enumerates the returned facets (Version, Updates, Cache, Sicherheits-Flags), which lets an agent distinguish it from the security/integrity siblings by scope. It never names a sibling it is not, so it stops short of full differentiation.
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?
No when-to-use, when-not-to-use, or alternative routing is given, despite many closely related WordPress siblings (check_wordpress_integrity, get_wordpress_hardening, get_wordpress_sites, scan_wordpress_vulnerabilities). The freshness caveat is about data quality, not about choosing this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_wordpress_pluginPlugin installierenADestructiveInspect
Installiert ein Plugin aus dem offiziellen WordPress-Verzeichnis auf einer Domain, wahlweise mit sofortiger Aktivierung. Dabei kommt fremder Programmcode auf die Website, den turbopress nicht geprüft hat. Höchstens fünf Installationen pro Tag. Installieren und Aktivieren sind EIN Vorgang: Scheitert nur die Aktivierung (etwa weil das Plugin eine höhere PHP-Version verlangt), ist das Plugin trotzdem INSTALLIERT. Das Tool liest den Zustand danach auf der Installation nach und meldet ihn — auch diesen Zwischenzustand. In dem Fall bitte NICHT erneut installieren (das endet in „already installed"), sondern die Aktivierung mit set_wordpress_plugin_state wiederholen. Lässt sich der Zustand nicht nachlesen, sagt die Antwort das ausdrücklich; das ist keine Aussage darüber, ob das Plugin da ist.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| plugin | Yes | Slug im WordPress-Verzeichnis, z. B. "wordfence" | |
| activate | No | true = nach der Installation sofort aktivieren. Standard: false | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructive/openWorld): warns that unchecked third-party code lands on the site, discloses the 5/day rate limit, explains that install+activate is a single atomic-looking operation, that a failed activation still leaves the plugin INSTALLED, and that the tool re-reads state afterwards — including the caveat that an unreadable state is not a statement about presence.
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?
Opens with the core action and scope, then layers the warnings. It is a dense block of German prose rather than scannable structure, but almost every sentence carries non-redundant behavioral information, so little is wasted.
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?
There is no output schema, and the description compensates by explaining what the tool reports back (post-install state readback, including the intermediate installed-but-inactive state and the unreadable-state case). For a destructive mutation tool this is unusually complete.
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 description coverage is 100%, so the baseline is 3, but the description adds workflow meaning to activate (install and activate are one operation, with the partial-failure consequence) rather than merely restating it. Domain and plugin semantics come entirely from the schema.
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?
Names a specific verb (install), resource (WordPress plugin) and source (offizielles WordPress-Verzeichnis auf einer Domain), plus the optional activation variant. It also implicitly separates itself from set_wordpress_plugin_state, which is named later as the tool for the activation-only path.
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-not guidance: after a partial failure, do NOT reinstall (that yields 'already installed') but repeat activation with set_wordpress_plugin_state — naming the alternative tool and the condition that selects it. The rate limit (max five installations per day) further constrains usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_wordpress_adminsWordPress-Administratoren auflistenARead-onlyInspect
Listet alle Benutzer mit Administratorrechten einer WordPress-Installation, mit Anmeldename, E-Mail-Adresse und Anlagedatum. Nach einem vermuteten Einbruch der erste Blick: Ein Konto, das der Kunde nicht kennt, fällt hier auf — besonders eines mit jüngerem Anlagedatum als die übrigen.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Nur nötig bei mehreren Installationen auf der Domain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds value the annotations cannot: since there is no output schema, it enumerates what is actually returned (login name, email, creation date) and frames the diagnostic interpretation of those fields.
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?
Two compact sentences, front-loaded with the capability and followed by the use case; nothing is redundant. The second sentence is slightly elaborate, but the forensic framing is operational value rather than filler.
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 two-parameter read-only tool with no output schema, the description covers purpose, the returned data, and the scenario that motivates calling it, while annotations carry the safety profile. Nothing essential for correct invocation 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 description coverage is 100%, so both parameters (domain, site_url) are already documented in the schema with examples and the multi-installation condition. The description adds no syntax or format detail beyond that, so 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 precise verb and resource ('Listet alle Benutzer mit Administratorrechten einer WordPress-Installation') and enumerates the returned fields (Anmeldename, E-Mail-Adresse, Anlagedatum). This clearly separates it from siblings like get_wordpress_sites, get_wordpress_status or reset_wordpress_admin_password without opening either 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?
It gives an explicit triggering scenario: the forensic first look after a suspected breach ('Nach einem vermuteten Einbruch der erste Blick'), including the heuristic that an unknown, recently created admin account stands out. It does not name an alternative tool or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_domain_orderDomain-Bestellung vorbereitenARead-onlyInspect
Prüft eine Domain per WHOIS und liefert — falls verfügbar — den Preis sowie einen Link zur Domainsuche-Seite, dessen Suchfeld mit dieser Domain vorbelegt ist. Das ist KEIN fertiger Warenkorb-Link: Die Domain landet dadurch nicht automatisch im Warenkorb, der Kunde muss auf der Seite erneut suchen und die Domain auswählen. Löst KEINE Zahlung aus und schließt KEINEN Vertrag ab (Registrant-Daten, AGB-Bestätigung und Bezahlung erfolgen erst im normalen WHMCS-Checkout, rechtlich bewusst kein automatischer Kauf per Chat). Ist die Domain vergeben, gibt es keinen Link — dann suggest_domain_alternatives nutzen.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die gewünschte Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, but the description adds substantial context beyond them: no payment is triggered, no contract is concluded, it is not a ready-made cart link, and the customer must re-search. This is exactly the behavioral detail an agent needs.
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?
Front-loaded with the core action and return, followed by clarifying caveats. It is somewhat long, but each sentence adds a distinct legal/behavioral nuance rather than repeating structured data.
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?
No output schema exists, yet the description explains return values (price and link, or no link), the no-payment/no-contract boundary, and the fallback tool. Complete for a read-only WHOIS check.
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% with a single documented parameter (example format given), so the schema already carries the semantics. The description adds no syntax or format detail beyond what the schema provides, so baseline 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?
States a specific verb+resource: checks a domain via WHOIS and returns price plus a pre-filled search link. It also distinguishes itself from check_domain_availability and suggest_domain_alternatives by describing exactly what it produces and what it is not.
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?
Explicitly routes the agent: when the domain is taken, use suggest_domain_alternatives instead. It also clarifies when this is the right tool (preparing an order link) versus a full cart/checkout flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_hosting_orderHosting-Bestellung vorbereitenARead-onlyInspect
Bereitet eine Hosting-Bestellung vor und liefert einen fertigen Warenkorb-Link — löst KEINE Zahlung aus und schließt KEINEN Vertrag ab. Preis, AGB-Bestätigung und Bezahlung erfolgen erst, wenn der Kunde den Link selbst im normalen WHMCS-Checkout abschließt (rechtlich bewusst kein automatischer Kauf per Chat).
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Die Produkt-ID aus get_hosting_packages | |
| billing_cycle | No | Gewünschter Abrechnungszeitraum — fällt auf den günstigsten verfügbaren zurück, falls nicht angeboten |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, destructiveHint=false, openWorldHint=false; the description adds the decisive operational facts that no payment is triggered and no contract is concluded, and that price, T&C and payment are deferred to the customer's own checkout. This is exactly the behavior an agent could not infer from the hints, and it is consistent with readOnlyHint rather than contradicting it.
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?
Two sentences, front-loaded with what the tool does and immediately followed by the legal/behavioral constraint. No filler; every clause carries information.
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 two-parameter tool with no output schema, the description covers the action, the returned artifact (cart link), and the transactional limits. Nothing an agent needs to select and call it correctly is missing, and the missing output schema is compensated by naming the return artifact.
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 description coverage is 100% (product_id references get_hosting_packages, billing_cycle documents the cheapest-available fallback), so the schema carries the parameter burden. The description adds no additional parameter meaning, which is the baseline-3 case.
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?
Specific verb+resource ('Bereitet eine Hosting-Bestellung vor') plus the concrete artifact produced ('liefert einen fertigen Warenkorb-Link'). The hosting scope inherently separates it from the sibling prepare_domain_order without needing to be spelled out.
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?
The description clearly frames the workflow boundary — it is the preparation step, and the customer completes the order themselves in the normal WHMCS checkout. It does not explicitly name alternatives or exclusion conditions (e.g. when to prefer a direct invoice flow), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_domainDomain weiterleitenAInspect
Richtet eine HTTP-Weiterleitung von einer Domain auf eine andere ein (z. B. nach einem Domain-Wechsel: "alte-domain.de soll auf neue-domain.de weiterleiten"). Beide Domains müssen eigene turbopress-Hosting-Produkte des Kunden sein — eine Domain, die nicht bei turbopress liegt, kann so nicht eingerichtet werden. Schlägt Plesk-seitig sauber fehl, wenn source_domain bereits ein eigenes aktives Hosting hat (muss vorher aufgegeben werden).
| Name | Required | Description | Default |
|---|---|---|---|
| source_domain | Yes | Die Domain, die weiterleiten soll (die "alte" Domain), z. B. alte-domain.de | |
| target_domain | Yes | Die Domain, auf die weitergeleitet wird (die "neue"/Ziel-Domain mit dem echten Hosting), z. B. neue-domain.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read-only, open-world, non-destructive mutation. The description adds real behavioral context beyond that: the prerequisite that both domains be turbopress-hosted, and the disclosed failure mode that setup fails cleanly on the Plesk side when source_domain still has its own active hosting (which must be abandoned first). It does not describe the success response, but annotations already carry the safety profile.
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?
Front-loads the purpose, then the example, then the requirements and failure behavior. Sentences are dense but each carries information; slightly long, but no filler.
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 two-parameter mutation tool with no output schema, the description covers purpose, prerequisites, ownership constraints, and the key failure mode, which is enough for an agent to invoke it correctly. It does not state the expected success outcome, a minor gap.
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 description coverage is 100%, so both parameters are already fully documented in the schema. The description restates the source (old) / target (new hosting) relationship with an inline example, which mildly reinforces the schema but adds no syntax or format detail. Baseline 3 is appropriate.
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 (einrichten) and resource (HTTP-Weiterleitung von Domain A auf Domain B) and includes a concrete example (alte-domain.de → neue-domain.de). The action is clearly distinct from get_domain_redirects and remove_domain_redirect, but no sibling is named explicitly, so it lands just short of the top mark.
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?
Gives a clear when-to-use scenario (after a domain change) and a when-not constraint (a domain not hosted with turbopress cannot be redirected this way), plus the requirement that both domains be the customer's own hosting products. Alternatives such as add_dns_record or fix_https_redirect are not named, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_added_domainAngelegte Subdomain oder Weiterleitung entfernenADestructiveInspect
Entfernt eine mit add_domain angelegte Weiterleitung (alias, Domain von einem anderen Anbieter) oder Subdomain wieder (hauptdomain = die Domain des Pakets, name = die weiterleitende Domain bzw. der vollständige Subdomain-Name). ACHTUNG: Beim Entfernen einer Subdomain mit eigener Website (sub_website) wird ihr Ordner mit allen Dateien gelöscht — das ist nicht umkehrbar; dafür muss bestaetigung exakt der vollständige Name (FQDN) sein, den der KUNDE selbst getippt hat (nie selbst einsetzen). Im Panel-Chat braucht der Aufruf zusätzlich den Bestätigungsklick. Per "Domain zuordnen" zugeordnete Domains und Staging-Adressen lehnt das Werkzeug ab. Ältere Weiterleitungen, die mit redirect_domain angelegt wurden, werden stattdessen mit remove_domain_redirect entfernt. Die Antwort wörtlich weitergeben.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Die hinzugefügte Domain bzw. Subdomain, z. B. andere.de oder shop.example.de | |
| hauptdomain | Yes | Die Domain des Hostingpakets, z. B. example.de | |
| bestaetigung | No | Bei einer Subdomain mit eigener Website Pflicht: der vollständige Name, vom Kunden selbst getippt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds crucial context beyond them: removing a subdomain with sub_website deletes its folder with all files irreversibly, bestaetigung must be exactly the customer-typed FQDN and must never be filled in by the agent, and the panel chat requires a confirmation click. It also instructs relaying the response verbatim.
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?
Front-loaded with the action and the destructive warning follows immediately; every clause carries operational meaning. The first sentence's parenthetical is dense and slightly hard to parse, which keeps it from a 5.
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 destructive 3-parameter mutation with no output schema, it covers everything needed: irreversibility and what gets deleted, the confirmation prerequisite, which inputs are rejected, the sibling tool to use instead, and how to handle the response. An agent can invoke it correctly without further information.
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 baseline is 3, but the description maps the parameters to their domain meaning (hauptdomain = the package's domain, name = the forwarding domain or full subdomain name) and clarifies the exact confirmation semantics. It adds modest value on top of the schema rather than full syntax detail.
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 (entfernt) and the exact resource class: redirects/subdomains previously created with add_domain, not arbitrary domains. It explicitly scopes out sibling cases — domains assigned via "Domain zuordnen" and staging addresses are rejected, and older redirects belong to remove_domain_redirect — so an agent can distinguish it from remove_domain_redirect without opening either 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?
Gives explicit when-to-use (only what add_domain created) and when-not (assigned domains, staging addresses rejected), plus the correct alternative by name for legacy redirects: remove_domain_redirect. It also states the mandatory prerequisite of a customer-typed confirmation for subdomains with their own website.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_domain_redirectDomain-Weiterleitung entfernenADestructiveInspect
Hebt EINE Domain-Weiterleitung auf — der Weg zurück zu redirect_domain, etwa wenn versehentlich die falsche Domain weitergeleitet wurde. Anzugeben ist die Domain MIT dem Hosting (das Ziel) und dazu entweder die redirect_id aus get_domain_redirects oder der Name der weiterleitenden Domain; beides wird serverseitig gegen die Weiterleitungen genau dieses Abonnements geprüft, eine geratene oder fremde Angabe wird abgewiesen, bevor irgendetwas aufgehoben wird. DIE FOLGE IST EINE ERREICHBARKEITSÄNDERUNG, und die gehört vor die Ausführung: Über die weiterleitende Domain läuft danach nichts mehr — wer sie in Lesezeichen, auf Visitenkarten, in einer E-Mail-Signatur oder als Link von einer anderen Seite stehen hat, landet im Leeren. Leitet sie auch E-Mail weiter (der Standard beim Einrichten, get_domain_redirects zeigt es), kommen Nachrichten an Adressen auf dieser Domain danach nicht mehr an. Nenne dem Kunden beides, bevor du es tust. STAGING-KOPIEN werden mit eigener Begründung abgewiesen: Sie sehen im Hosting-System wie eine Weiterleitung aus, sind aber Testumgebungen, und der Chat kann sie nicht wiederherstellen. Die Antwort sagt ausdrücklich, ob die Weiterleitung danach wirklich aus der Liste verschwunden ist; war die Liste danach nicht abrufbar, meldet sie das als ungeprüft statt als Erfolg. War die Liste schon vorher nicht abrufbar, wird nichts aufgehoben — das heißt dann NICHT, dass es die Weiterleitung nicht gibt. Neu einrichten lässt sie sich jederzeit mit redirect_domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain MIT dem Hosting, also das Ziel der Weiterleitung, z. B. neue-domain.de | |
| redirect_id | No | Kennung der Weiterleitung aus get_domain_redirects. Vor dem Aufheben frisch abrufen, nie eine Kennung aus einer früheren Antwort verwenden. | |
| source_domain | No | Alternativ zur Kennung: die weiterleitende Domain, genau wie von get_domain_redirects geliefert, z. B. alte-domain.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is covered, yet the description adds the substantive consequences the annotation cannot convey: loss of reachability for bookmarks/cards/signatures/backlinks, loss of email reception when forwarding is enabled, staging copies being irreversible, and the response semantics (explicit confirmation of removal, 'unverified' instead of success if the list is unreadable, and the trap that an already-unreadable list does NOT prove absence). This is unusually rich disclosure.
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?
Dense but front-loaded: the action, the alternative, the required inputs, then the consequences, then the response behavior. Every sentence carries operational information, though the run length is longer than strictly necessary for an MCP description.
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?
No output schema exists, and the description compensates by explaining what the response reports (confirmed removal vs. unverified, and why an unreadable list is not evidence of absence). Combined with the parameter and consequence coverage, an agent has everything needed to call this destructive tool responsibly.
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 baseline is 3, but the description adds real semantics beyond the schema: the target domain must be given WITH its hosting, and exactly one of redirect_id or source_domain must accompany it, both validated server-side against the current subscription's redirects so guessed or foreign values are rejected up front.
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 ('Hebt EINE Domain-Weiterleitung auf') with explicit scope (exactly one redirect) and immediately distinguishes it from siblings redirect_domain and get_domain_redirects. An agent can tell what it does and what it is not without opening any 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?
Gives explicit when-to-use ('etwa wenn versehentlich die falsche Domain weitergeleitet wurde'), names the inverse alternative (redirect_domain to re-create) and the lookup alternative (get_domain_redirects for the id). Also states the exclusion: staging copies are rejected on principle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_email_aliasE-Mail-Alias entfernenADestructiveInspect
Entfernt EINE Alias-Adresse von einem Postfach — der Weg zurück zu set_email_alias. Nachrichten an die Alias-Adresse kommen danach NICHT MEHR BEIM POSTFACH AN; sie werden in der Regel abgewiesen (der Absender bekommt eine Fehlermeldung) — ist für die Domain eine Sammeladresse eingerichtet (Catch-All, "Mail an nicht existierende Benutzer" auf weiterleiten), gehen sie stattdessen dorthin; sage dem Kunden das vorher und frage, ob die Adresse noch irgendwo steht (Website, Signatur, Visitenkarten, Formulare). Das Postfach selbst und alle Nachrichten darin bleiben unberührt — auch das gehört in die Antwort, sonst glaubt der Kunde, seine Mails seien mit weg. Postfach UND Alias werden serverseitig gegen die Postfächer genau dieses Abonnements geprüft, bevor irgendetwas entfernt wird; get_email_accounts zeigt die Aliase je Postfach, rate keinen. EINE BESONDERHEIT, die du nie übergehen darfst: Das Hosting-System meldet für diesen Befehl gemessen AUCH DANN Erfolg, wenn es den Alias gar nicht gab. Der Server verlässt sich deshalb nicht darauf, sondern sieht danach nach — steht der Alias noch da, meldet die Antwort einen FEHLER und keinen Erfolg. Melde diesen Fall nie als erledigt. War die Postfachliste nicht abrufbar, wird nichts entfernt; das heißt dann NICHT, dass es den Alias nicht gibt. Neu einrichten lässt sich ein Alias jederzeit mit set_email_alias.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Die zu entfernende Alias-Adresse — lokaler Teil ("kontakt") oder volle Adresse ("kontakt@example.de"), genau wie von get_email_accounts geliefert. Der Alias muss an GENAU DIESEM Postfach hängen. | |
| Yes | Das Postfach, an dem der Alias hängt — lokaler Teil ("info") oder volle Adresse ("info@example.de"), genau wie von get_email_accounts geliefert | ||
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations (destructiveHint/openWorldHint). Discloses that alias mail is typically rejected, that a catch-all may swallow it instead, that the mailbox and its messages are unaffected, that both mailbox and alias are validated server-side, and that the hosting system reports false success for non-existent aliases — with an explicit instruction never to report that case as done.
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?
The core operation and its inverse are front-loaded in the first clause, and every sentence carries operational weight (the false-success warning is essential). It is nonetheless long and slightly repetitive — the closing 'Neu einrichten lässt sich ein Alias jederzeit mit set_email_alias' restates the opening and could be cut.
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?
Complete for a destructive mutation with no output schema. Consequence disclosure, prerequisite lookup, validation behavior, and the critical false-success edge case are all covered, leaving an agent nothing substantive it could get wrong.
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 schema already documents all three required parameters including accepted local-part vs. full-address formats. The description reinforces sourcing values from get_email_accounts and that the alias must belong to exactly this mailbox, but adds no new format or syntax beyond the schema — baseline 3.
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 precise verb and resource ('Entfernt EINE Alias-Adresse von einem Postfach') and explicitly names set_email_alias as the inverse operation, so an agent can distinguish it from the sibling without opening either 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?
Provides explicit when-to-use context (must verify via get_email_accounts first, 'rate keinen'), names the alternative for re-creation, and specifies a pre-removal condition (ask the customer whether the address is still published). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_protected_directoryPasswortschutz entfernenADestructiveInspect
Hebt den Passwortschutz EINES Verzeichnisses einer Domain auf — der Weg zurück zu create_protected_directory. Sag dem Kunden vorher klar, was das bedeutet: Der Bereich ist danach wieder ÖFFENTLICH, jeder mit der Adresse kommt ohne Anmeldung hinein, und Suchmaschinen können ihn wieder aufnehmen und anzeigen. Liegen dort Dateien, die niemand sehen soll, ist das der falsche Weg. ZWEI GRENZEN, die du nicht verschweigen darfst: (1) Es gibt KEIN Werkzeug, das die geschützten Verzeichnisse einer Domain auflistet — das Hosting-System bietet dafür keinen Leseweg. Frag den Kunden nach dem Pfad, rate ihn nicht. (2) Ob der Schutz danach wirklich weg ist, lässt sich aus demselben Grund nicht nachlesen: Belegt ist nur, dass das Hosting-System den Auftrag angenommen und nicht abgelehnt hat. Melde das als angenommen, nie als bestätigt, und nenne dem Kunden die Probe: die Adresse in einem privaten Fenster aufrufen — kommt keine Passwortabfrage mehr, ist der Schutz weg. Wieder schützen lässt sich der Bereich jederzeit mit create_protected_directory, das alte Passwort kommt dabei aber nicht zurück.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| directory | Yes | Das geschützte Verzeichnis, mit führendem Schrägstrich und in derselben Schreibweise wie beim Anlegen, z. B. "/intern" oder "/httpdocs/kunden". Erlaubt sind nur Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein Schrägstrich am Ende; Namensteile "." und ".." und "/" allein werden abgewiesen. Alte Einträge in WordPress-Systemordnern (wp-admin, wp-includes, wp-content), die früher angelegt wurden, lassen sich weiterhin entfernen, nur das Neuanlegen mit create_protected_directory ist dort gesperrt. Es gibt keinen Weg, die geschützten Verzeichnisse aufzulisten: Der Pfad muss vom Kunden kommen. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the destructiveHint/openWorldHint annotations: it discloses the consequence (directory becomes public, search engines may index it), that no read tool exists to list or verify protected directories, that the only verifiable fact is that the hosting system accepted the order, and that the old password is unrecoverable after re-protection. It even supplies a customer-facing verification probe (private browsing window).
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?
Front-loaded with the core action and its inverse before the caveats. Every sentence carries information, but the all-caps emphasis and dense single-paragraph layout make it heavier than necessary; splitting the two 'GRENZEN' into tighter bullets would improve scanability.
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 destructive, unverifiable mutation with no output schema, the description covers consequences, verification, rollback, and the missing read path. An agent has everything needed to call it and to report results honestly to the customer.
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 schema already carries the path format rules and constraints. The description adds operational meaning by insisting the path come from the customer and not be inferred, which affects how the agent fills the directory parameter. It adds nothing on syntax beyond the schema, so it stays below 5.
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 ('Hebt den Passwortschutz EINES Verzeichnisses einer Domain auf') and immediately names its inverse, create_protected_directory. The scoping to exactly one directory prevents confusion with any broader operation, and the sibling that performs the reverse action is named explicitly.
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?
Gives when-not guidance ('Liegen dort Dateien, die niemand sehen soll, ist das der falsche Weg') and names the alternative (create_protected_directory for re-protection). It also tells the agent it must obtain the path from the customer rather than guessing, which is a concrete invocation precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_ticketAuf Support-Ticket antwortenAInspect
Sendet eine Antwort auf ein bestehendes eigenes Support-Ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Nachrichtentext der Antwort. Der Server lehnt bei mehr als 10000 BYTES ab (HTTP 400 "invalid_input") — gezählt werden BYTES, nicht Zeichen: ASCII-Zeichen zählen 1 Byte, ein Umlaut oder ß zählt 2. Deutscher Text mit Umlauten reisst die Grenze also schon deutlich vor 10000 Zeichen, z. B. sind 5000 "ä" (10000 Bytes) noch erlaubt, 5001 "ä" (10002 Bytes) schon abgewiesen. Derselbe Fehler kommt auch bei leerer Nachricht und bei ungültiger ticket_id — ein Fehlschlag ist also kein sicheres Zeichen dafür, dass Kürzen hilft. create_support_ticket hat dagegen keine Längengrenze. | |
| ticket_id | Yes | Die in get_support_tickets angezeigte interne Ticket-ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover non-readonly and non-destructive, so the safety profile is largely set. The description adds only the ownership constraint ('eigenes'), which is useful behavioral context but limited; it does not mention side effects, notifications, or state changes to the ticket status.
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, front-loaded sentence that names verb and resource with no filler.
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?
With only one sentence and a rich schema, the definition is functional but thin: it omits workflow context (where ticket_id comes from, whether a reply changes ticket status, that close_support_ticket exists). Adequate to invoke, but not complete for correct routing.
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 description coverage is 100%, so both parameters are fully documented in the schema, including the precise byte-limit behavior and the get_support_tickets reference. The description itself adds no parameter meaning, so the baseline 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 verb+resource ('Antwort auf ... Support-Ticket' senden), making the action clear. It is however in German while sibling tools and the schema are in English/German mix, and it does not name create_support_ticket or close_support_ticket to differentiate the action beyond the verb.
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?
The phrase 'bestehendes eigenes Support-Ticket' implies a precondition (ticket must already exist and belong to the user), which gives minimal usage guidance. There is no explicit when-to-use vs. create_support_ticket or close_support_ticket, and no note that ticket_id must come from get_support_tickets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_email_passwordE-Mail-Passwort zurücksetzenADestructiveInspect
Setzt das Passwort eines bestehenden E-Mail-Postfachs zurück. Das alte Passwort wird dabei ungültig — Vorsicht bei aktiven Mail-Clients, die neu konfiguriert werden müssen. Ob das Postfach existiert, wird NICHT vorab geprüft: Gibt es die Mailbox nicht, wird die Aktion abgelehnt und das bisherige Passwort bleibt gültig — das ist keine Störung. Im Zweifel vorher get_email_accounts aufrufen, statt den Namen zu raten.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.com | |
| local_part | Yes | Lokaler Teil der Adresse (vor dem @), z. B. "info" für info@example.com. Erlaubt sind nur Buchstaben, Ziffern, Punkt, Bindestrich, Unterstrich, höchstens 64 Zeichen — keine Umlaute. gültig: "info", "max.mustermann", "Info_Neu". abgewiesen: "büro", "müller" (Umlaute), "info+shop" (Plus-Zeichen). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations (destructiveHint=true, readOnlyHint=false): it warns that the old password is invalidated, that active mail clients must be reconfigured, and that a nonexistent mailbox causes rejection while the existing password remains valid — explicitly framed as not a malfunction. This is exactly the operational detail 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?
Four sentences, each carrying distinct load: purpose, destructive consequence, failure behavior, and the pre-check alternative. The core action and its risk are front-loaded, with no filler.
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 destructive, no-output-schema mutation tool, the description covers the consequence of success, the failure mode, and the recommended precaution. Nothing an agent needs before invoking it 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 description coverage is 100%, and both parameters (domain, local_part) already carry detailed descriptions with allowed-character rules and examples. The description adds no additional parameter syntax, so the baseline of 3 is appropriate.
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 ('setzt ... zurück') and resource ('Passwort eines bestehenden E-Mail-Postfachs'), which cleanly separates it from the sibling reset_ftp_password and reset_wordpress_admin_password. An agent can identify the target entity and action 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?
Gives clear operational context: existence is not pre-checked, and it explicitly routes to get_email_accounts when the mailbox name is uncertain ('statt den Namen zu raten'). It does not spell out when a different reset tool would be the right choice, but the guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_ftp_passwordFTP-Passwort zurücksetzenADestructiveInspect
Setzt das Passwort eines ZUSÄTZLICH angelegten FTP-Zugangs einer Domain zurück. Das neue Passwort wird serverseitig erzeugt. Die bisherigen Zugangsdaten funktionieren danach nicht mehr — wer sie in einem FTP-Programm gespeichert hat, muss sie dort ändern. NICHT möglich ist das für den Hauptzugang des Abonnements (der Login aus der Willkommens-Mail, den get_ftp_accounts als Hauptzugang ausweist): Sein Passwort ist zugleich das SSH-Passwort und wird in Plesk geändert, siehe https://panel.turbopress.de/knowledgebase/57/FTP-und-SSH-Passwort-in-Plesk-aendern.html
| Name | Required | Description | Default |
|---|---|---|---|
| login | Yes | Login des bestehenden FTP-Zugangs, dessen Passwort zurückgesetzt werden soll | |
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=true annotation, it discloses the concrete consequence (previous credentials stop working, must be updated in the FTP client) and the server-side generation of the new password. The one real gap is that it never says how the newly generated password is delivered back to the caller, which matters for a reset tool with no output schema.
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?
Front-loads the primary action and consequence, and every clause carries distinct information (scope, consequence, exclusion, alternative). It is dense rather than padded, though the single long sentence plus inline URL makes it slightly heavier than needed.
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 destructive reset tool it covers the affected resource, the irreversibility of the old credentials, and the excluded case with an escape hatch. The omission of how the new password is returned to the caller is the only notable hole given there is no output schema.
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 baseline would be 3, but the description adds real eligibility meaning to the 'login' parameter: it must be an additionally created FTP account and cannot be the subscription's main login. That constrains which values are valid in a way the schema does not.
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 ('Setzt das Passwort eines ... FTP-Zugangs ... zurück') with an explicit scope qualifier ('ZUSÄTZLICH angelegten'), which cleanly separates it from reset_email_password and reset_wordpress_admin_password among the siblings. An agent can identify the operation 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?
Explicitly states when NOT to use it (the main subscription account, identified via get_ftp_accounts, whose password is also the SSH password) and routes the agent to the correct alternative (Plesk, with a knowledgebase URL). This is a genuine when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_wordpress_admin_passwordWordPress-Admin-Passwort zurücksetzenADestructiveInspect
Setzt das Passwort eines WordPress-Admin-Kontos zurück. Mit login lässt sich ein BESTIMMTER Benutzername gezielt ansprechen — der Name wird vorher gegen die echte Administratorenliste der Installation geprüft und abgelehnt, wenn es ihn dort nicht gibt; list_wordpress_admins liefert die vorhandenen Namen. Ohne login wird das hinterlegte Standard-Admin-Konto zurückgesetzt. Das alte Passwort wird dabei sofort ungültig, und das neue Passwort wird in der Antwort nur EINMAL im Klartext angezeigt — danach ist es nicht mehr abrufbar. Bei mehreren WordPress-Installationen auf derselben Domain muss site_url angegeben werden.
| Name | Required | Description | Default |
|---|---|---|---|
| login | No | Benutzername des WordPress-Administrators, dessen Passwort zurückgesetzt werden soll (z. B. "redakteur"). Weglassen für das hinterlegte Standard-Admin-Konto. Namen liefert list_wordpress_admins. | |
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen: welche gemeint ist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and readOnly=false, but the description adds genuinely non-obvious behavior: the old password is immediately invalidated, the new password is returned in plaintext exactly ONCE and is then unrecoverable, and a nonexistent login is rejected via pre-validation against the real admin list. These are consequential traits an agent could not derive from the annotations.
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?
Front-loads the core action and leads with the most important branch (login vs. default), then the destructive/one-time-password caveat. Dense but every clause carries operational information; slightly long, though nothing is filler.
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 destructive mutation with no output schema, the description supplies the missing return-value context (the new password appears once in the response and cannot be retrieved again) and the multi-site disambiguation rule, leaving nothing an agent needs to call it correctly.
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 baseline is 3, but the description adds real meaning: 'login' is validated against the actual administrator list and rejected if absent, and 'site_url' is only required 'bei mehreren WordPress-Installationen auf derselben Domain'. This conditional requirement is not evident from the schema alone.
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 ('Setzt das Passwort eines WordPress-Admin-Kontos zurück') and immediately distinguishes itself from sibling reset_email_password/reset_ftp_password by scoping to WordPress admin accounts. An agent can tell exactly what operation this performs 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?
Explicitly covers the login vs. no-login decision ('Mit login lässt sich ein BESTIMMTER Benutzername gezielt ansprechen... Ohne login wird das hinterlegte Standard-Admin-Konto zurückgesetzt'), names the alternative tool list_wordpress_admins for discovering valid names, and states the site_url prerequisite for multi-install domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_wordpress_backupWordPress-Backup wiederherstellenADestructiveInspect
Spielt ein vorhandenes On-Demand-WordPress-Backup (aus get_wordpress_backups) zurück und überschreibt damit den aktuellen Live-Stand der Seite. Vor dem Restore wird automatisch ein Sicherungs-Backup des bisherigen Stands erstellt ("pre-restore-...") und sein Vorhandensein nachgewiesen; gelingt das nicht, wird NICHT restauriert. WICHTIG für die Antwort: WP Toolkit NIMMT den Restore-Auftrag nur an und arbeitet ihn im Hintergrund ab — dass er durchgelaufen ist, lässt sich nicht bestätigen, und ein Fehlschlag danach (etwa beim Datenbank-Import) meldet sich nirgends. Das Tool meldet deshalb IMMER "angestoßen, nicht bestätigt" und nie "wiederhergestellt"; diesen Vorbehalt bitte unverändert weitergeben. Ob der erwartete Stand da ist, sieht nur der Kunde selbst auf der Website. Bei mehreren WordPress-Installationen auf derselben Domain muss site_url angegeben werden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| filename | Yes | Dateiname des zurückzuspielenden Backups (siehe get_wordpress_backups) | |
| site_url | No | Bei mehreren WordPress-Installationen: welche gemeint ist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint=true annotation: it discloses that a pre-restore backup is automatically created and verified first, that restoration is aborted if that verification fails, and critically that the job is asynchronous — acceptance only, no completion confirmation, and post-acceptance failures (e.g. DB import) are silently unreported. It even prescribes the exact response wording the agent must relay.
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?
Front-loaded with the destructive action and its effect, then the safety mechanism, then the async caveat. It is fairly long, but each sentence carries operational weight — particularly the mandated 'angestoßen, nicht bestätigt' wording — so little is expendable.
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?
With no output schema, the description fully compensates by explaining exactly what the tool will and will not report about the outcome, and by warning that verification is only possible by the customer on the live site. Nothing an agent needs to call or correctly report on this tool 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 description coverage is 100%, so all three parameters are already documented in the schema, and the description's mention of site_url for multi-install domains simply reinforces that. Baseline 3 is appropriate since the description adds no syntax or format detail beyond the schema.
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 ('Spielt ein ... WordPress-Backup ... zurück') and immediately defines scope: it overwrites the current live state of the site. It also names the source of the backup (get_wordpress_backups), distinguishing it from create_wordpress_backup and delete_wordpress_backup without needing 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?
Points the agent to get_wordpress_backups for the filename and states the condition for supplying site_url (multiple WordPress installations on the same domain). It does not spell out when NOT to restore (e.g. staging vs production) or prerequisites like permissions, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revert_wordpress_security_measureWordPress-Härtungsmaßnahme zurücknehmenADestructiveInspect
Nimmt GENAU EINE zuvor gesetzte WP-Toolkit-Härtungsmaßnahme wieder zurück. Nur möglich, wenn die Maßnahme laut get_wordpress_hardening umkehrbar ist (rollback=true) — fünf der neunzehn Maßnahmen sind es nicht.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| measure | Yes | Kennung der Maßnahme, z. B. "dbPrefix" — get_wordpress_hardening nennt die verfügbaren Kennungen. | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds meaningful context beyond that: it undoes a previously applied measure, operates on exactly one item, and is gated by a reversibility flag exposed elsewhere.
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?
Two sentences with zero waste: the action and its single-item scope are front-loaded, followed by the gating condition. The emphasis on GENAU EINE prevents a likely misuse (batching reverts).
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 destructive mutation with no output schema, the description covers purpose, scope, and the prerequisite that determines feasibility. It could say more about what happens to site behavior after a revert or whether re-application is possible, but nothing essential for correct invocation 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 description coverage is 100%, so domain, measure, and site_url are already documented in the schema. The description adds only the constraint that the measure must be reversible, which is usage rather than parameter meaning; baseline 3 applies when the schema does the heavy lifting.
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 (zurücknehmen/revert) and a precise resource (a WP-Toolkit hardening measure) with an explicit scope constraint (GENAU EINE). It is unambiguous against the sibling apply_wordpress_security_measure because it describes the inverse operation.
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?
Gives a clear precondition: the measure must be reversible (rollback=true) per get_wordpress_hardening, and notes five of nineteen are not. It points the agent to the tool that reveals that condition but does not explicitly name apply_wordpress_security_measure as the contrasting alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_wordpress_vulnerabilitiesBekannte WordPress-Sicherheitslücken anzeigen (letzte Prüfung)ARead-onlyInspect
Zeigt das Ergebnis der letzten Sicherheitsprüfung einer eigenen WordPress-Installation (löst selbst keinen neuen Scan aus): bekannte Sicherheitslücken in WordPress-Kern, Plugins und Themes — mit CVE-Kennung, Risikoeinstufung, ob die Lücke aktiv ausgenutzt wird, und ab welcher Version sie behoben ist. Nennt außerdem, welche Härtungsmaßnahme eine Lücke entschärft; diese Kennung nimmt apply_wordpress_security_measure entgegen. Zeigt den Stand der letzten Prüfung. Steht dort "kein Zeitpunkt hinterlegt", ist unbekannt, ob je geprüft wurde — ein leeres Ergebnis ist dann KEINE Entwarnung und darf dem Kunden nicht als solche verkauft werden.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), yet the description adds genuinely new behavioral context: it does not initiate a scan, and it warns that a missing timestamp means an empty result is NOT an all-clear and must not be reported as one. That empty-result caveat is exactly the kind of operational nuance annotations cannot express.
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?
Front-loads the key disambiguation (shows last check, no new scan) before listing returned fields, and the warning is last where it belongs. It is somewhat dense and contains mild repetition ('Zeigt den Stand der letzten Prüfung'), keeping it short of a 5.
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?
There is no output schema, so the description carries the burden of describing return values and does so thoroughly (CVE, risk, exploitation status, fixed version, hardening measure ID). Combined with the empty-result caveat, an agent has everything needed to call and interpret the tool correctly.
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 description coverage is 100% for both parameters (domain, site_url), so the schema already documents them adequately. The description adds no extra syntax or format guidance for these parameters, which is the correct baseline-3 outcome when the schema does the heavy lifting.
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 precise verb and resource (shows the result of the last security check) and immediately corrects the misleading name by clarifying it does NOT trigger a new scan. It also enumerates the exact data returned (CVE ID, risk rating, active exploitation, fix version), so an agent can distinguish it from siblings like check_wordpress_integrity or get_wordpress_hardening.
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?
Clearly frames context (only reads the last check, resolves no new scan) and names the downstream consumer apply_wordpress_security_measure, giving a concrete usage hint. It stops short of explicitly naming alternatives for running an actual scan or comparing against get_security_status, so no full when-not/alternative map is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_domain_error_logFehlerprotokoll durchsuchenARead-onlyInspect
Durchsucht die Fehlerprotokolle einer DOMAIN und gibt die passenden Zeilen AUS DEM ANGEFRAGTEN ZEITRAUM aus ("hours", Standard 24, höchstens 168 — je größer der Zeitraum, desto länger dauert die Suche; erst mit 24 beginnen und nur bei Bedarf vergrößern, und mehrere Suchen nacheinander statt gleichzeitig starten). Erster Schritt bei „meine Seite ist weiß" oder „seit gestern kommen Fehler". Die Protokolle gehören dem Webserver der Domain, nicht einer bestimmten Anwendung: Eine Domain mit reinem PHP-Projekt wird genauso gelesen wie eine mit WordPress. Der Zeitraum gilt für die Zeilen und für die Zahlen — eine Protokolldatei umspannt Monate, eine Zeile vom April ist keine Antwort auf eine Frage nach gestern. Kein Treffer heißt also "nichts in diesem Zeitraum", nicht "nie ein Fehler"; gibt es ältere, nennt die Antwort deren jüngstes Datum, und ein größerer "hours"-Wert holt sie herein. Die AUSGEGEBENE ZEILENZAHL IST GEKAPPT (höchstens 20) — wie oft ein Fehler auftritt, sagt allein die dann mit genannte Gesamtzahl der Treffer, nie die Zahl der gezeigten Zeilen. Ohne "pattern" werden die jüngsten Zeilen des Protokolls ausgegeben, egal ob Fehler oder nicht: Der Webserver schreibt dort auch den Normalbetrieb hin ([NOTICE]), solche Zeilen sind KEIN Befund. Wer Fehler sucht, gibt ein Muster an, z. B. "PHP Fatal error". Zeilen, deren Zeitstempel sich nicht lesen lässt, werden mitgegeben und als "[Zeitpunkt unbekannt]" gekennzeichnet. Die zusätzlich genannten Zahlen je Protokollart gelten nicht für die Fehlerarten — deren Zählung ist auf unseren Servern nachweislich falsch und wird deshalb weggelassen; ob es Fehler gibt, sagen die Zeilen. Aus Datenschutzgründen werden nur Zeilen aus den Fehlerprotokollen ausgegeben, nie aus dem Zugriffsprotokoll, und IP-Adressen sind darin unkenntlich gemacht.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Zeitraum in Stunden rückwärts, Standard 24, höchstens 168 (größere Werte dauern deutlich länger) | |
| domain | Yes | Die Domain, z. B. example.de | |
| pattern | No | Suchbegriff, z. B. ein Fehlertext oder Plugin-Name. Buchstaben, Ziffern, Leerzeichen, . _ - / — höchstens 64 Zeichen, keine Sonderzeichen regulärer Ausdrücke. OHNE Muster kommen die jüngsten Protokollzeilen unabhängig davon, ob sie Fehler sind (der Webserver schreibt dort auch den Normalbetrieb hin) — für die Frage "gibt es Fehler" immer ein Muster angeben. | |
| site_url | No | Nur für eine WordPress-Installation auf einer Unterdomain mit eigenem Protokollverzeichnis. Ohne Angabe wird das Fehlerprotokoll der Domain selbst gelesen. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, non-open-world profile, yet the description adds substantial behavior beyond them: the 20-line output cap, the separately reported total hit count, [NOTICE] lines not being findings, '[Zeitpunkt unbekannt]' for unparseable timestamps, deliberately omitted per-error-type counts, and privacy-driven IP redaction. This is exactly the extra context annotations cannot carry.
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?
Purpose and the 'first step' trigger are front-loaded, and each sentence carries a concrete pitfall (cap, NOTICE noise, timestamp marker, omitted counts, privacy), so little is padding. It is nonetheless dense and long — a couple of clauses could be tightened without losing meaning.
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?
With no output schema, the description must explain what comes back, and it does thoroughly: capped line count plus a separate total, marker for unparseable timestamps, exclusion of per-error-type counts, error-logs-only output and IP anonymization. An agent knows both how to call it and how to read the result.
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 baseline is 3, and much of the hours/pattern/site_url semantics is repeated from the schema. It still adds genuine value beyond the schema: the operational advice to start at 24 and enlarge only on demand, and the sequential-search guidance tied to the hours parameter.
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 (durchsucht) and resource (Fehlerprotokolle einer DOMAIN) with explicit scope. It further distinguishes itself from siblings by clarifying the logs belong to the webserver, not an application, and that access logs are never read — an agent can tell it apart from diagnose_website or get_website_report without opening any 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?
Gives explicit when-to-use triggers ('erster Schritt bei "meine Seite ist weiß" oder "seit gestern kommen Fehler"'), prescribes the starting value (24 hours) and how to escalate, warns against concurrent searches, and states when to supply a pattern versus when not to. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_contact_formKontaktformular einrichtenAInspect
Legt fest, an welche E-Mail-Adresse(n) das Kontaktformular einer Website im Tarif turbopress AI Launch Nachrichten schickt (1 bis 5 Adressen), optional mit Betreff-Präfix. Nötig, bevor Formulare der Website funktionieren. Die Adressen nur so übernehmen, wie der Nutzer sie genannt hat. Gibt Hinweise zur Zustellbarkeit (SPF/DKIM) zurück – diese dem Nutzer nennen. Formulare der Website müssen an action="/_tp/form.php" method="post" senden, jedes Feld mit name-Attribut.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| recipients | Yes | Empfänger-Adressen, z. B. ["info@example.de"] | |
| subject_prefix | No | Betreff-Präfix der Mails, Standard "Kontaktanfrage" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description adds substantial context beyond them: it states the return value (SPF/DKIM deliverability hints) and instructs the agent to relay them to the user, requires copying addresses exactly as the user provided, and specifies the form endpoint (action="/_tp/form.php" method="post" with name attributes). This is rich operational guidance.
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?
Purpose and prerequisite are front-loaded, followed by parameter handling, return-value guidance, and integration requirements. Every sentence carries distinct information, though the final form-integration sentence is dense and could be split. No wasted text.
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?
With no output schema, the description still discloses the return value and how to use it, states the prerequisite, and documents the required form markup. An agent has everything needed to call the tool and act on the result correctly.
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 baseline is 3, but the description adds real meaning: the 1-5 recipient constraint and, critically, the instruction to adopt addresses only as the user named them (a handling rule not expressible in the schema). The subject-prefix parameter is only implied via 'optional mit Betreff-Präfix', slightly less than the schema provides.
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: sets the recipient email address(es) the contact form of a turbopress AI Launch website sends to, including the 1-5 range and optional subject prefix. No sibling tool covers contact-form configuration, and the resource ('Kontaktformular einer Website') is unambiguous.
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?
Explicitly states the prerequisite: 'Nötig, bevor Formulare der Website funktionieren.' This tells the agent when the tool must run. It does not name alternative or competing tools, but there is no sibling overlap, so no exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_email_aliasE-Mail-Alias einrichtenAInspect
Setzt einen Alias für ein bestehendes E-Mail-Konto (z. B. "kontakt" liefert dann zusätzlich an "info"). Ein neuer Alias KOMMT ZU den bestehenden DAZU und ersetzt keinen (gemessen 2026-09-21; die frühere Auskunft "pro Mailbox ist immer nur ein Alias aktiv, ein neuer ersetzt den bisherigen still" war falsch und darf dem Kunden nicht mehr gegeben werden). Es gehen also keine Adressen verloren — dafür sammeln sie sich an. ÜBER DIESEN WEG lässt sich ein Alias nicht löschen (gemessen: Plesk lehnt einen leeren Alias ab); ENTFERNEN geht aber sehr wohl, und zwar mit remove_email_alias (seit dem 21.09.2026 gemessen — die frühere Auskunft "das geht nur im Kundenbereich" war falsch und darf dem Kunden nicht mehr gegeben werden). Welche Aliase ein Postfach hat, zeigt get_email_accounts — vor einem erneuten Aufruf dort nachsehen, damit nicht versehentlich ein weiterer dazukommt. Geprüft wird nur, dass Postfach und Alias nicht leer sind: Umlaute gehen durch diese Prüfung durch und scheitern erst bei Plesk. Ob das Postfach existiert, wird NICHT vorab geprüft: Gibt es die Mailbox nicht, wird die Aktion abgelehnt und nichts geändert — das ist keine Störung. Im Zweifel vorher get_email_accounts aufrufen, statt den Namen zu raten.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Lokaler Teil des neuen Alias, z. B. "kontakt" | |
| domain | Yes | Die Domain, z. B. example.de | |
| mailbox | Yes | Lokaler Teil des bestehenden E-Mail-Kontos, das den Alias bekommen soll, z. B. "info" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true): aliases accumulate rather than replace, so nothing is lost but they pile up; validation only rejects empty mailbox/alias so umlauts pass validation and fail at Plesk; mailbox existence is not pre-checked and a missing mailbox causes rejection with no changes (explicitly framed as normal, not a failure). This is exactly the kind of operational context annotations cannot carry.
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?
Operationally dense and mostly earning its space, but notably long, and the meta-warnings about previously incorrect answers ("die frühere Auskunft ... war falsch und darf dem Kunden nicht mehr gegeben werden") appear twice and restate the same point in different words. Useful for correcting stale agent priors, yet bloated for a three-parameter tool.
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?
With no output schema, no enums, and a flat three-parameter object, this covers everything an agent needs: prerequisites, the additive (non-destructive) effect, the failure mode for a non-existent mailbox, the fact that umlauts surface only at Plesk, and the deletion alternative. Nothing material is left to inference.
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 every parameter already has a description with an example, so the baseline is 3. The description adds relationship semantics (the alias is a local part attached to the named mailbox's local part within the given domain) but no syntax or constraint detail beyond what the schema states.
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 precise verb and resource ("Setzt einen Alias für ein bestehendes E-Mail-Konto") plus a concrete example showing the additive effect ("kontakt" liefert zusätzlich an "info"). It also names the sibling it is not (remove_email_alias) and the sibling that reveals state (get_email_accounts), so an agent can route without opening any 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?
Explicit when-to-use and when-not: this path cannot delete an alias, use remove_email_alias for that; call get_email_accounts first (especially before a repeat call) so you don't add another alias inadvertently; if unsure whether the mailbox exists, look it up rather than guessing. Alternatives and preconditions are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_email_autoreplyAbwesenheitsnotiz einrichtenAInspect
Schaltet die Abwesenheitsnotiz (automatische Antwort) eines bestehenden E-Mail-Kontos ein oder aus, etwa "richte für info@ eine Urlaubsantwort bis zum 31.01. ein". Beim Einschalten ist text Pflicht; subject (Betreff) und end_date (Enddatum, Format JJJJ-MM-TT, heute oder später) sind optional. Ohne Betreff gilt der Standard "Re: " plus der Betreff der eingegangenen Mail. Das Enddatum ist optional: Ohne Enddatum läuft die Notiz, bis sie ausgeschaltet wird — sag dem Kunden das, damit er sie nicht vergisst. Zum Ausschalten reicht enabled=false; Text und Betreff bleiben dann für das nächste Einschalten gespeichert. Jeder Absender bekommt höchstens EINE automatische Antwort pro Tag (nicht pro Mail). Der Text geht an jeden fremden Absender — nenne dem Kunden den Wortlaut, bevor du ihn setzt. Text höchstens 4000 Zeichen, Betreff höchstens 200; Emojis und einige Sonderzeichen kann das Postfach nicht speichern, dann wird nichts geändert. Text und Betreff dürfen nicht mit einem Bindestrich beginnen (Aufzählungen mit „-“ weiter unten im Text sind erlaubt); keine Emojis; keine unsichtbaren Steuerzeichen (etwa Nullbreiten- oder Richtungszeichen). Das Postfach wird serverseitig gegen die Postfächer genau dieser Domain geprüft; im Zweifel vorher get_email_accounts aufrufen, das den Stand der Notiz je Postfach zeigt (an, aus, abgelaufen). Das Ergebnis wird durch erneutes Lesen bestätigt: Kann der neue Stand nicht gelesen werden, meldet die Antwort ausdrücklich "nicht bestätigt" — gib das dann genau so weiter, nie als Erfolg.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Text der automatischen Antwort — erforderlich, wenn enabled=true. Höchstens 4000 Zeichen, Zeilenumbrüche erlaubt; kein Bindestrich am Textanfang, keine Emojis, keine unsichtbaren Steuerzeichen | |
| domain | Yes | Die Domain, z. B. example.de | |
| enabled | Yes | true = Abwesenheitsnotiz einschalten, false = ausschalten (dann sind text, subject und end_date nicht nötig) | |
| subject | No | Betreff der automatischen Antwort, höchstens 200 Zeichen, einzeilig. Weglassen = Standard "Re: " plus Betreff der eingegangenen Mail | |
| end_date | No | Enddatum im Format JJJJ-MM-TT (z. B. "2026-12-31"), heute oder später. Weglassen = ohne Enddatum, die Notiz läuft bis zum Ausschalten | |
| local_part | Yes | Lokaler Teil des bestehenden E-Mail-Kontos, z. B. "info" (nicht die volle Adresse) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only covering the read/write/open-world profile, the description carries the real behavioral burden and does it richly: one autoresponse per sender per day (not per mail), text goes to every external sender, state persists after disabling, validation failures result in no change at all, and a server-side read-back that can report 'nicht bestätigt', which must never be relayed as success.
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?
Front-loaded with the core action and one example, and nearly every sentence contributes a distinct rule or consequence. It loses a little to duplication with the schema (character limits, emoji/hyphen bans) and to being one undivided block despite covering several distinct concerns.
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?
No output schema exists, yet the description explains the response semantics (confirmation by re-read, explicit 'nicht bestätigt' case), the failure modes (unsupported characters → no change), the rate limit, and the state model across enable/disable. 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 description coverage is 100%, so formats, limits and defaults are already documented in the schema and the description largely restates them (4000/200 characters, JJJJ-MM-TT, subject default). It adds the conditional requirement (text Pflicht beim Einschalten) and the consequence of omitting end_date, but that is incremental rather than compensating for any gap.
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?
Names a specific verb pair (ein-/ausschalten) and a precise resource (Abwesenheitsnotiz eines bestehenden E-Mail-Kontos) and includes a concrete usage example. An agent can instantly distinguish it from siblings such as set_email_forwarding, set_email_alias or get_email_accounts.
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?
Gives clear operative context: text is required only when enabling, enabled=false is sufficient to turn it off, and get_email_accounts is named as the pre-check when the mailbox state is uncertain. It stops short of explicitly contrasting with the adjacent mail tools (forwarding/alias) or stating when not to use it, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_email_forwardingE-Mail-Weiterleitung einrichtenAInspect
Aktiviert oder deaktiviert die Weiterleitung eines bestehenden E-Mail-Kontos an eine beliebige externe Adresse (z. B. "leite info@ an meine private Gmail weiter"). target_address ist beim Aktivieren zwingend erforderlich. Ob das Postfach existiert, wird NICHT vorab geprüft: Gibt es die Mailbox nicht, wird die Aktion abgelehnt und nichts geändert — das ist keine Störung. Im Zweifel vorher get_email_accounts aufrufen, statt den Namen zu raten.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| enabled | Yes | true = Weiterleitung aktivieren, false = deaktivieren | |
| mailbox | Yes | Lokaler Teil des bestehenden E-Mail-Kontos, z. B. "info" (nicht die volle Adresse) | |
| target_address | No | Ziel-E-Mail-Adresse der Weiterleitung — erforderlich wenn enabled=true. Geprüft wird nur, dass das Feld nicht leer ist; der Wert geht unverändert in EIN einzelnes Adressfeld bei Plesk. Genau EINE Adresse eintragen: Mehrere Empfänger ("a@x.de, b@y.de") oder ein Name davor ("Max Mustermann <max@gmail.com>") werden nicht hier, sondern erst von Plesk abgelehnt. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say it is a non-read-only, non-destructive, open-world write), the description discloses the real behavioral traits: mailbox existence is NOT pre-checked, a missing mailbox causes the action to be rejected with nothing changed, and the value is passed unchanged into a single Plesk address field. It also warns that multi-recipient strings and display-name formats are rejected downstream by Plesk, not here.
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?
The core action is front-loaded, followed by the requirement, then the failure-mode caveat and the pre-check advice. Every sentence carries information, though the German phrasing stacks several clauses into the final sentence.
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 4-parameter mutation tool with no output schema, the description covers the essential decision inputs: prerequisite, conditional requirement, and failure semantics. Return-value or permission details are omitted, but annotations and the absence of an output schema make those less critical.
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 description coverage is 100%, so the schema already carries the parameter documentation. The description reinforces the target_address-required-when-enabled rule but adds little semantic detail the schema does not already contain, so the baseline of 3 is appropriate.
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 verb pair and resource: activating or deactivating forwarding of an existing e-mail account to an external address, with a concrete example. It is unambiguous about scope, but it never distinguishes itself from the adjacent sibling set_email_alias, which is the most likely confusion for an agent picking between the two.
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 gives clear conditional guidance: target_address is mandatory when enabling, and it explicitly tells the agent to call get_email_accounts first rather than guessing a mailbox name. There is no explicit statement of when *not* to use it (e.g. versus set_email_alias), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_hotlink_protectionHotlink-Schutz einstellenADestructiveInspect
Schaltet den Hotlink-Schutz einer Domain ein oder aus. Eingeschaltet können fremde Websites Dateien der Domain nicht mehr direkt einbinden — das trifft auch erwünschte Einbindungen, die dann über friendly_domains erlaubt werden müssen. Die Antwort meldet den GEWÜNSCHTEN Zustand — Plesk bestätigt nur die Annahme des Befehls. Was danach wirklich gilt, liest get_hotlink_protection; damit lässt sich eine Änderung nachprüfen, statt sie zu behaupten. ZU DEN BEIDEN LISTEN, beides live gemessen: (1) Eine angegebene Liste ERSETZT die bisherige vollständig — wer einen Eintrag HINZUFÜGEN will, muss die bestehenden MITSCHICKEN, sonst sind sie weg; den aktuellen Stand vorher mit get_hotlink_protection nachsehen, statt den Kunden aus dem Gedächtnis zu fragen. (2) Eine Liste, die nicht erwähnt wird, bleibt unverändert. LEEREN geht über diesen Weg NICHT: Das Hosting-System weist jede Schreibweise eines leeren Werts ab ("", " ", ";", "none"), deshalb wird ein ausdrücklich leerer Wert abgewiesen statt als Erfolg gemeldet. Um einen einzelnen Eintrag zu entfernen, die vollständige gewünschte Liste ohne diesen Eintrag angeben; soll gar nichts mehr drinstehen, geht das nur im Kundenbereich.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| enabled | No | true (Standard) = Schutz einschalten, false = ausschalten | |
| extensions | No | Geschützte Dateiendungen, mit Semikolon getrennt. Jede Endung nur Kleinbuchstaben und Ziffern, 1–8 Zeichen, höchstens 21 Endungen. gültig: "jpg;png;gif", "jpg". abgewiesen: "JPG;PNG" (Grossbuchstaben), ".jpg;.png" (Punkt), "jpg, png" (Komma statt Semikolon). | |
| friendly_domains | No | Domains, die trotzdem einbinden dürfen, mit Semikolon getrennt. Nur Kleinbuchstaben, Ziffern, Punkt und Bindestrich, je Domain 1–80 Zeichen, höchstens 21 Domains — kein Schema wie "https://" und keine Grossbuchstaben. gültig: "partner.de", "partner.de;other.com". abgewiesen: "https://partner.de" (Schema), "www.Partner.de" (Grossbuchstabe). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint=true, openWorldHint=true) by disclosing that the response reports only the DESIRED state while Plesk merely acknowledges receipt, so a change must be verified via get_hotlink_protection. It also warns that a supplied list fully replaces the existing one (destroying entries unless re-sent), that an omitted list stays unchanged, and that empty values are rejected rather than silently succeeding. All of this is consistent with, and enriches, the destructive annotation.
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?
Front-loaded with the core action, then structured into two numbered list rules and a clearing rule — easy to scan despite the length. It is verbose and restates the clearing limitation twice (once in the empty-value warning, once in the closing sentence), which costs some tightness.
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?
No output schema exists, and the description compensates by explaining exactly what the response does and does not mean plus the correct verification path. For a destructive, open-world mutation with four params, the edge cases (list replacement, empty-value rejection, removal workflow) an agent needs are all present.
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 schema already documents formats for all four params, so the baseline is 3. The description adds genuine parameter-level semantics the schema lacks: replace-vs-omit behavior for extensions/friendly_domains, and the rejection of any empty-list spelling. It stops short of per-parameter value guidance beyond that.
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 ("Schaltet den Hotlink-Schutz einer Domain ein oder aus") and immediately clarifies the consequence of enabling it. It is cleanly separable from its read-side sibling get_hotlink_protection, which is named in the text.
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?
Explicitly routes the agent: check/verify with get_hotlink_protection before and after, and states a hard limitation — clearing is NOT possible through this tool (empty values rejected; use the customer area instead). This is a rare case of clear when-to-use, when-to-verify, and when-not-possible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_site_metaSeitentitel und Beschreibung festlegenADestructiveInspect
Seitentitel und Beschreibung (so erscheint die Website bei Google) einer Website im Tarif turbopress AI Launch lesen oder setzen. Ohne title/description liefert das Tool die aktuellen Werte. turbopress setzt beides bei jeder Vorschau/Veröffentlichung in die Startseite ein (Unterseiten ohne eigenen Titel bekommen den Titel), auch bei Claude-Design-Exporten. Titel möglichst ≤ 60 Zeichen, Beschreibung ≤ 160; leerer String entfernt den Wert. apply_now=true erstellt sofort eine neue Version aus der veröffentlichten Website mit Vorschau – dem Nutzer die Vorschau zeigen und erst nach seiner ausdrücklichen Zustimmung deploy_publish mit der zurückgegebenen deploy_id aufrufen.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Seitentitel, z. B. "Bäckerei Sonnenschein – Frisches Brot in Dresden" | |
| domain | Yes | Die Domain der Website im Tarif turbopress AI Launch, z. B. example.de | |
| apply_now | No | true = sofort neue Version aus der Live-Website mit Vorschau erstellen | |
| description | No | Beschreibung für die Suchergebnisse, 1–2 Sätze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description discloses the concrete destructive behaviors: an empty string removes the value, turbopress overwrites both fields into the start page on every preview/publish, and subpages without their own title inherit it. It also explains that apply_now recreates a version from the live site, which is exactly the kind of side effect an agent needs before acting.
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?
Purpose is front-loaded and the paragraph is dense rather than padded. It is long for a single block, and the apply_now behavior is partly restated from the schema, but each sentence still contributes operational information.
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?
With no output schema, the description compensates by describing the read behavior (returns current values) and the deploy_id returned in the apply_now path. It also covers the consent gate before deploy_publish. Minor gaps remain: no guidance on invalid domains or sites outside the plan, and no error behavior.
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 baseline is 3, but the description adds meaning the schema lacks: an empty string deletes the value, titles should stay ≤60 characters and descriptions ≤160 (while the schema only enforces 120/320), and apply_now must be paired with a preview-then-confirm flow. Only the domain parameter gets no extra explanation.
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 names a specific verb pair ("lesen oder setzen") and a specific resource ("Seitentitel und Beschreibung") and scopes it to the turbopress AI Launch plan. No sibling tool manages SEO metadata, so the agent can distinguish it immediately from tools like set_contact_form or deploy_put_file.
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 states the read-vs-write condition explicitly ("Ohne title/description liefert das Tool die aktuellen Werte") and prescribes the follow-up workflow for apply_now=true: show the preview to the user and only call deploy_publish with the returned deploy_id after explicit consent. That names the alternative tool and the condition that gates it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_spam_filterSpamfilter einstellenADestructiveInspect
Schaltet den Spamfilter eines Postfachs ein oder aus und legt fest, was mit erkanntem Spam geschieht. Achtung: action="del" löscht erkannte Nachrichten sofort und unwiederbringlich, auch bei einem Fehltreffer. Empfehlung ist "move" (Spam-Ordner) oder "mark" (nur Betreff kennzeichnen). Die Antwort dieses Werkzeugs meldet den GEWÜNSCHTEN Zustand — Plesk bestätigt nur die Annahme des Befehls. Was danach wirklich gilt, liest get_spam_filter; damit lässt sich eine Änderung nachprüfen, statt sie zu behaupten.
| Name | Required | Description | Default |
|---|---|---|---|
| hits | No | Punktzahl, ab der eine Mail als Spam gilt (1–20). Weglassen ändert NICHTS am bisherigen Wert — der Parameter wird dann gar nicht an Plesk übergeben, der zuvor gesetzte Wert bleibt stehen (kein automatisches Zurücksetzen auf Plesks Standard von 7). Den aktuell gesetzten Wert nennt get_spam_filter — dort nachsehen, statt "7" anzunehmen. | |
| action | No | mark (Standard) = nur Betreff kennzeichnen, move = in den Spam-Ordner, del = sofort löschen | |
| domain | Yes | Die Domain, z. B. example.de | |
| enabled | No | true (Standard) = Filter einschalten, false = ausschalten | |
| mailbox | Yes | Lokaler Teil des Postfachs, z. B. "info" | |
| bestaetigung | No | Nur bei action="del" (bei eingeschaltetem Filter): die vollständige Adresse des Postfachs, z. B. info@example.de. Ohne sie lehnt der Server mit confirmation_required ab und ändert nichts. Nur setzen, nachdem der Kunde das endgültige Löschen erkannter Spam-Mails ausdrücklich bestätigt hat — nie vorsorglich mitschicken. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint=true annotation by specifying exactly what is destroyed (detected messages, immediately, including false positives) and warning that the response echoes the DESIRED state while Plesk only acknowledges the command. This 'optimistic response' caveat is exactly the kind of behavioral nuance 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?
Front-loads the purpose, then the destructive warning, then the verification caveat in a tight sequence. Every sentence carries distinct information: capability, risk, recommendation, response semantics.
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 6-parameter destructive mutation tool with no output schema, the description covers capability, risk, safe defaults, the confirmation gate, and how the return value should be interpreted and verified. 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 baseline is 3, but the description adds genuine value by stressing the false-positive danger of action="del" and the irreversibility, reinforcing the enum's meaning beyond the schema text. It stops short of restating the hits/mailbox semantics, so it is an increment rather than a full re-documentation.
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: enabling/disabling a mailbox's spam filter and defining what happens to detected spam. It explicitly names sibling get_spam_filter as the read counterpart, so an agent can distinguish the pair without opening schemas.
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?
Gives explicit when-not guidance (avoid action="del" because it deletes irreversibly even on false positives) and recommends "move" or "mark" instead. It also routes the agent to get_spam_filter for post-change verification, covering the verify-after-write workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_email_providerE-Mail-Anbieter einrichtenADestructiveInspect
Stellt die E-Mail einer Domain auf einen externen Anbieter (Google Workspace oder Microsoft 365) um, oder führt die Umstellung weiter. WICHTIG: Mit "umstellen" geht neue Mail sofort nur noch an den neuen Anbieter (MX wird gesetzt). Zwei Wege (weg): "umzug" (Standard) = die alten Postfächer und der IMAP-Zugang bei turbopress bleiben bis "abschliessen" erreichbar, damit der Kunde die alte Mail zum neuen Anbieter umziehen kann; "neu" = Neustart: der Maildienst bei turbopress wird sofort abgeschaltet (Postfächer und Mails bleiben erhalten, der IMAP-Zugang ist gesperrt). Wenn die Postfächer noch Mail enthalten, immer "umzug" bevorzugen. NIE umstellen, abschliessen oder rueckweg ohne ausdrücklichen Wunsch des Kunden; vorher den Weg erklären und die betroffenen Postfächer nennen (get_email_accounts). Ablauf: (1) Den Kunden nach dem TXT-Bestätigungswert aus dem Admin-Center seines Anbieters fragen und mit aktion "txt" setzen (provider + txt). (2) Der Kunde bestätigt die Domain beim Anbieter. (3) aktion "umstellen" (Standard) mit provider, weg, anbieter_bestaetigt=true und bestaetigung; setzt MX/SPF/Autodiscover. mx, dkim1, dkim2, dkim_selektor, dkim_schluessel nur angeben, wenn der Kunde sie aus seinem Admin-Center nennt; DKIM lässt sich auch später mit aktion "dkim" nachreichen. (4) aktion "abschliessen" beendet den Umzug und sperrt den IMAP-Zugang bei turbopress; aktion "rueckweg" stellt alles wieder auf turbopress zurück (Maildienst an, MX/SPF zurück). abschliessen und rueckweg gehen nur nach vorheriger Umstellung. Pflicht: anbieter_bestaetigt=true (nur wenn die Domain beim Anbieter wirklich bestätigt ist) bei "umstellen"; bestaetigung = die vom KUNDEN selbst getippte Domain bei umstellen, abschliessen und rueckweg (nie selbst einsetzen, immer den Kunden fragen). Das Ergebnis (summary, zustand, hinweise, eintraege) wörtlich weitergeben; nur dann Erfolg melden, wenn die Antwort ihn meldet. Liegen die Nameserver nicht bei turbopress, wird nichts geändert und die Einträge (eintraege) werden zum Selbsteintragen beim DNS-Anbieter mitgegeben. Das Umstellen ist pro Tag begrenzt.
| Name | Required | Description | Default |
|---|---|---|---|
| mx | No | MX-Wert des Anbieters, nur wenn der Kunde einen abweichenden nennt | |
| txt | No | TXT-Bestätigungswert des Anbieters (aus dessen Admin-Center, vom Kunden erfragen); Pflicht bei aktion txt | |
| weg | No | Standard umzug (Mails bleiben nutzbar). neu schaltet den Maildienst bei turbopress ab (Postfächer bleiben, IMAP gesperrt) | |
| dkim1 | No | Erster DKIM-Wert (z. B. Microsoft 365 selector1), vom Kunden erfragen | |
| dkim2 | No | Zweiter DKIM-Wert (z. B. Microsoft 365 selector2), vom Kunden erfragen | |
| aktion | No | Standard umstellen. txt = Bestätigungswert des Anbieters setzen, dkim = DKIM nachreichen, abschliessen = Umzug beenden und IMAP sperren, rueckweg = zurück zu turbopress | |
| domain | Yes | Die Domain, z. B. example.de | |
| provider | No | Der Anbieter; Pflicht bei umstellen und txt | |
| bestaetigung | No | Die vom Kunden selbst getippte Domain; Pflicht bei umstellen, abschliessen und rueckweg | |
| dkim_selektor | No | DKIM-Selektor bei Google Workspace (z. B. google), vom Kunden erfragen | |
| dkim_schluessel | No | DKIM-Schlüssel bei Google Workspace, vom Kunden erfragen | |
| anbieter_bestaetigt | No | Pflicht true bei umstellen: die Domain ist beim Anbieter bestätigt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds substantial context: "neu" immediately disables the turbopress mail service and locks IMAP, MX/SPF get set, nameservers not at turbopress means nothing changes and DNS entries are handed back for manual entry, and "Das Umstellen ist pro Tag begrenzt" flags rate limiting. It even specifies success-reporting discipline (only report success if the response says so). Slightly less than 5 because the return structure is only named, not characterized.
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?
Front-loaded with purpose, then the critical "WICHTIG" caveat, then the two modes, then a numbered Ablauf. Every block is relevant for a destructive multi-step tool, though the single dense paragraph is a wall of text and the closing rate-limit sentence feels appended rather than integrated.
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 12-parameter destructive, open-world tool with no output schema, the description covers the full lifecycle: prerequisite TXT step, provider confirmation, Umstellen with MX/SPF/Autodiscover, DKIM follow-up, Abschluss/Rueckweg, the nameserver-off-turbopress fallback, and how to relay the result fields (summary, zustand, hinweise, eintraege). Nothing an agent needs to invoke it safely 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 description coverage is 100%, so the schema already documents every parameter including per-action obligations, so the baseline is 3. The description does add workflow-level meaning (which parameters belong to which step, that DKIM can be supplied later via aktion "dkim", that bestaetigung must be customer-typed and never auto-filled), but much of this is mirrored in the schema descriptions.
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 ("Stellt die E-Mail einer Domain auf einen externen Anbieter um, oder führt die Umstellung weiter") and names the two supported providers. The multi-action/carrier nature is made explicit up front, so an agent can tell this apart from sibling mailbox tools like create_email_account or set_email_forwarding.
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?
Gives explicit when/when-not guidance: "NIE umstellen, abschliessen oder rueckweg ohne ausdrücklichen Wunsch des Kunden", prefer "umzug" when mailboxes still contain mail, and instructs to call get_email_accounts first to name affected mailboxes. It also states a sequencing rule (abschliessen/rueckweg only after a prior Umstellung) that routes the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_wordpress_permalinksWordPress-Permalinks setzenAIdempotentInspect
Stellt die Permalink-Struktur einer WordPress-Installation von der einfachen Form (?p=123) auf eine schöne Adresse um (Standard: /beitragsname/; alternativ /Jahr/Monat/beitragsname/ oder /Jahr/Monat/Tag/beitragsname/). Erstellt davor automatisch ein Sicherheits-Backup und weist dessen Vorhandensein nach — lässt es sich nicht erstellen oder nicht nachweisen, wird NICHTS geändert. Ändert NUR die einfache Struktur: Hat die Installation schon eine schöne Struktur, wird nichts verändert (auch nicht auf eine andere), weil das bestehende Links und die Suchmaschinen-Platzierung ungültig machen würde — dann steht in der Antwort, wie der Kunde das selbst unter Einstellungen → Permalinks entscheidet. Nach dem Setzen wird die Struktur nachgelesen; gelingt das nicht, meldet das Tool ehrlich "unverified" statt Erfolg zu behaupten. Dem Kunden danach mitgeben: ein paar Seiten prüfen; bei einem 404-Fehler im WordPress-Backend unter Einstellungen → Permalinks einmal "Änderungen speichern" klicken; WordPress leitet alte ?p=123-Adressen meist automatisch um, extern gesetzte Links ggf. anpassen. Gibt es auf der Domain mehrere WordPress-Installationen, ist site_url nötig.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen auf derselben Domain: welche gemeint ist | |
| structure | No | Gewünschte schöne Struktur: "beitragsname" = /beitragsname/, "monat_und_name" = /Jahr/Monat/beitragsname/, "tag_und_name" = /Jahr/Monat/Tag/beitragsname/. Standard: beitragsname. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile: readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the agent knows this is an idempotent mutation. The description adds specifics beyond that: backup creation, verification, and aborts if the backup is not verifiable, plus an honest 'unverified' state after post-read. It does not state required permissions or how the change is applied, so despite useful details it remains at a solid but not exceptional level.
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?
The core action is front-loaded in the first sentence, and the subsequent sentences each carry behavioral information (backup, refusal, verification, customer follow-up). It is a dense block rather than a structured bullet list, but no sentence is genuinely wasted.
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 mutation tool with no output schema, it covers failure modes, the no-op condition, the verification result ('unverified'), and even what the response will contain. Everything the agent needs to call and interpret the result is given.
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 description explains the conditional need for site_url ('Gibt es auf der Domain mehrere WordPress-Installationen, ist site_url nötig'), adding actionable meaning beyond the schema. This is a useful clarification, though it overlaps with information the schema already provides.
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 ('Stellt die Permalink-Struktur einer WordPress-Installation ... um') with the exact scope of the change (from ?p=123 to a pretty URL) and the target formats. An agent immediately knows this is a WordPress permalink mutation tool, distinct from siblings like get_wordpress_status or update_wordpress_core.
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?
Explicitly defines when it acts (only plain structure) and when it does not ('Hat die Installation schon eine schöne Struktur, wird nichts verändert'), including the reason and a redirect to manual action by the customer. It also states the precondition for site_url, so the agent knows the branching condition before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_wordpress_plugin_statePlugin aktivieren oder deaktivierenADestructiveInspect
Aktiviert oder deaktiviert ein bereits installiertes WordPress-Plugin. Der wichtigste Anwendungsfall ist das Abschalten eines Plugins, das die Website zerlegt oder kompromittiert wurde. Der Plugin-Slug wird serverseitig gegen den Bestand der Installation selbst geprüft (wp-cli, nicht das WP Toolkit) — auch ein per wp-admin oder FTP eingespieltes Plugin ist damit schaltbar. Lässt sich der Bestand nicht lesen, wird der Versuch trotzdem gewagt statt fälschlich "nicht installiert" zu melden; scheitert auch er, sagt die Antwort ausdrücklich, dass das kein Beleg für ein fehlendes Plugin ist.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| plugin | Yes | Slug des Plugins, z. B. "woocommerce" — nicht der Anzeigename. Alle installierten Plugins mit Slug nennt get_wordpress_plugins (get_outdated_plugins zeigt nur die mit verfügbarem Update, get_wordpress_status nennt gar keine Namen, nur den Zähler plugins_to_update). Ist der Slug nicht bekannt, dort nachsehen statt zu raten. | |
| enabled | Yes | true = aktivieren, false = deaktivieren | |
| site_url | No | Nur nötig, wenn mehrere WordPress-Installationen auf der Domain liegen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/openWorld, and the description goes well beyond them: it discloses server-side slug validation via wp-cli rather than the WP Toolkit inventory, the deliberate best-effort retry when inventory can't be read, and the fact that a failure response explicitly must not be read as proof the plugin is absent. That error-semantics detail is the kind of behavioral context an agent cannot get from structured fields.
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?
Purpose and the highest-stakes use case are front-loaded, and every sentence carries information. The final sentence is long and nested but justifies its length by covering a non-obvious failure mode.
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 4-parameter destructive mutation with no output schema, the definition covers scope, slug sourcing, fallback behavior, and failure interpretation. It does not say whether the operation is instantly reversible or what permissions the API token needs, which are the remaining relevant gaps.
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 description coverage is 100% — the schema already explains domain, slug-not-display-name, the false=enabled boolean, and the multi-install site_url case. The description adds only the server-side validation angle for the slug, so 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?
States a specific verb pair (activate/deactivate) on a precisely scoped resource (an already-installed WordPress plugin), immediately distinguishing it from install_wordpress_plugin. The added note that plugins installed via wp-admin or FTP are also covered sharpens the scope further.
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?
Names a concrete primary use case (shutting off a plugin that wrecked or compromised the site), which tells the agent when to reach for this tool. It does not explicitly contrast against install_wordpress_plugin or start_bulk_wordpress_update, so the alternative-routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_bulk_wordpress_updateUpdates für mehrere Sites einspielenADestructiveInspect
Startet EINEN Sammelauftrag für bis zu 25 WordPress-Sites auf einmal (statt viele einzelne update_wordpress_item-Aufrufe). Je Site entweder items (ausdrücklich genannte Plugins/Themes, höchstens 20, Slugs aus get_outdated_plugins) ODER alle_offenen: true (alle offenen Plugin- und Theme-Updates, im Auftrag frisch gelesen, höchstens 20 je Site; der Rest wird im Ergebnis genannt). core: true nur, wenn der Kunde AUSDRÜCKLICH ein WordPress-Core-Update verlangt, sonst weglassen. Je Site wird zuerst ein Sicherheits-Backup erstellt; ohne belegtes Backup wird diese Site nicht aktualisiert. Die Updates laufen nacheinander IM HINTERGRUND — die Antwort enthält nur die batch_id sowie die Listen eingeplant und uebersprungen (belegte Sites mit Grund), noch KEIN Ergebnis. Beim Chat-Zugang bestätigt der Kunde den ganzen Auftrag einmal; die Antwort ist dann eine Bestätigungsanfrage, nichts wurde ausgeführt. Nach dem Start nicht von sich aus nachfragen; get_bulk_update_status nur, wenn der Kunde den Fortschritt wissen will. Vorher get_wordpress_overview aufrufen, um die Sites (domain und site_url) zu kennen.
| Name | Required | Description | Default |
|---|---|---|---|
| sites | Yes | Die Sites des Auftrags (1 bis 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true but the description supplies the operational specifics the agent actually needs: a security backup runs per site and a site without a verified backup is skipped, updates run sequentially in the background, and the response contains only batch_id plus scheduled/skipped lists with no results yet. It also discloses the chat-access confirmation round-trip where nothing is executed. This is substantial value beyond the annotations.
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?
The core purpose and the sibling alternative are front-loaded in the first clause, and nearly every sentence carries operational weight. It is dense and repeats the 20-item limit already encoded in the schema, which is the only clear waste.
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 destructive, open-world bulk mutation with no output schema, the description covers prerequisites, side effects (backup, per-site skip), execution model (background, sequential), return shape, confirmation flow, and the follow-up tool. Nothing an agent needs to invoke 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 description coverage is 100%, so the baseline is 3, but the description adds real semantics: items vs. alle_offenen are mutually exclusive, alle_offenen is read fresh at job time and capped at 20 per site with the remainder reported, and core is opt-in only. That goes beyond what the schema states, though the 'highest 20' cap slightly duplicates the schema's maxItems.
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 ('Startet EINEN Sammelauftrag für bis zu 25 WordPress-Sites') and explicitly contrasts it with the sibling it replaces ('statt viele einzelne update_wordpress_item-Aufrufe'). An agent can distinguish it from update_wordpress_item and get_bulk_update_status without opening any 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?
Gives explicit routing rules: use this instead of many single calls, call get_wordpress_overview beforehand, take slugs from get_outdated_plugins, use core only on explicit request, and do not poll afterwards unless the customer asks for progress. Negative guidance ('nicht von sich aus nachfragen') and tool alternatives are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_performance_scanPerformance-Scan startenAInspect
Stößt bei turbometrics einen Performance-Scan an, statt auf den nächsten automatischen Lauf zu warten. Ändert am Hosting nichts. Das Ergebnis holt AUSSCHLIESSLICH get_performance_findings — es liest die Scanliste im Moment der Abfrage und zeigt damit genau diesen Lauf; get_performance_score bleibt zunächst auf dem alten Wert, weil dort der nächtliche Bericht steht. Liefert bewusst keinen Ergebnis-Link (der Scan läuft in unserem Agenturkonto, dessen Report der Kunde nicht öffnen kann). Die Antwort gibt den gemeldeten Zustand wieder, statt in jedem Fall "gestartet" zu melden: ein sofort fehlgeschlagener oder unbekannter Zustand wird als solcher benannt. Eine Laufzeit wird NICHT zugesagt — ob der Lauf durch ist, zeigt der Zeitpunkt bei get_performance_findings.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, and the description adds substantial context beyond them: no hosting changes, no result link because the scan lives in the agency account, no runtime guarantee, and the response reports the actual reported state rather than always saying 'gestartet'. This is unusually rich disclosure for a mutation-flavored tool.
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?
Front-loaded with the action, and each sentence carries a distinct fact (scope, result path, stale score, no link, honest state reporting, no runtime promise). It is somewhat long and repeat-referencey for a one-parameter trigger, which keeps it short of a 5.
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 trigger tool in a multi-step flow with no output schema, the description supplies everything an agent needs: how to read the result, why the score lags, why there is no link, and that completion is discovered via the timestamp on get_performance_findings. Nothing material 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 description coverage is 100% and there is only one parameter (domain), so the schema already carries the semantics. The description adds nothing domain-specific; baseline 3 is correct when the schema does the work.
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 (anstoßen/start) plus the resource (Performance-Scan) and the explicit contrast case (statt auf den nächsten automatischen Lauf zu warten). The sibling landscape contains many get_performance_* readers, and this one is clearly demarcated as the trigger rather than a reader.
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?
Tells the agent when to use it (instead of waiting for the automatic run) and routes the follow-up explicitly: results come AUSSCHLIESSLICH from get_performance_findings, while get_performance_score stays stale until the nightly report. That is an explicit alternative/next-step with conditions attached.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_domain_alternativesDomain-Alternativen vorschlagenARead-onlyInspect
Schlägt verfügbare Domain-Alternativen vor, wenn die gewünschte Domain vergeben ist — prüft denselben Namen unter einer kuratierten Auswahl gängiger TLDs (.de, .com, .net, .org, .eu, .info, .online, .shop, .io, .biz) per WHOIS und liefert bis zu 5 tatsächlich verfügbare Treffer. Schlägt eine WHOIS-Abfrage fehl (z.B. Registrar-Ausfall), wird die betroffene TLD nicht als "vergeben" gewertet, sondern als fehlender Messwert benannt — das kann "keine Alternativen gefunden" von "nicht alle TLDs geprüft" unterscheidbar machen.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die ursprünglich gewünschte, nicht verfügbare Domain, z. B. example.de |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint, destructiveHint=false), and the description still adds genuinely non-obvious behavior: the curated TLD scope, the 5-result cap, and the failure semantics where a failed WHOIS is reported as a missing measurement rather than treated as "taken". That last point directly tells the agent how to interpret an empty result, which is the kind of nuance the structured fields 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?
Two dense but purposeful sentences with the purpose front-loaded before the enumeration and the failure caveat. Every clause carries information, though the em-dash-heavy construction is slightly heavy for what is a one-parameter tool.
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 read-only, single-parameter tool with no output schema, the description covers what an agent needs: what it checks, how many results it returns, and how to interpret a negative or partial outcome. Nothing material is left to inference.
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 description coverage is 100% and the single parameter is documented there as the originally desired, unavailable domain. The description restates that same constraint without adding syntax, format, or validation detail, so the schema carries the load — baseline 3.
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 concrete verb+resource ("Schlägt verfügbare Domain-Alternativen vor") and pins down the exact mechanism: the same name checked against a fixed, enumerated list of 10 TLDs via WHOIS, capped at 5 reachable hits. That mechanism makes it unmistakably distinct from check_domain_availability even without naming the sibling.
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?
Gives a clear triggering condition — use it when the originally desired domain is already taken — which is exactly the context an agent needs. It stops short of an explicit exclusion or naming the alternative tool (check_domain_availability) for single-domain lookups, so it is clear context without full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_php_versionPHP-Version wechselnAInspect
Wechselt die PHP-Version einer Domain (z. B. "8.4"). Welche Versionen es gibt und welche eingestellt ist, zeigt get_php_versions — dort nachsehen, NIE mit einer geratenen Version "ausprobieren": Ein Wechselversuch kann beim Kunden als Bestätigungsknopf landen. Eine Version, die auf dem Server nicht wählbar ist, wird abgewiesen, bevor irgendetwas vorbereitet oder geändert wird; die Fehlermeldung nennt dann die wählbaren Versionen. Die gesetzte Version wird aus Plesk zurückgelesen; lässt sich der Wert nicht zurücklesen, sagt die Antwort das ausdrücklich statt den Wunschwert als bestätigt auszugeben.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| php_version | Yes | Ziel-PHP-Version, GENAU im Format "X.Y" mit je einer Ziffer vor und nach dem Punkt (z. B. "8.4") — einer der Werte aus get_php_versions. Als ungültiges Format abgewiesen: "8", "8.4.1", "PHP 8.4", "8.10". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give readOnlyHint=false, destructiveHint=false, openWorldHint=true. The description goes well beyond: validation happens before any preparation or change, the error message enumerates the allowable versions, and the applied value is read back from Plesk with an explicit admission when read-back fails instead of echoing the requested value. That is substantive mutation-behavior disclosure.
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?
Front-loaded with purpose, then prerequisite, then failure/verification behavior. Dense but every sentence carries distinct operational information; slight length keeps it from a perfect score.
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 two-parameter mutation with no output schema, the description covers the prerequisite lookup, pre-change validation, error content, and post-change verification. Nothing an agent needs to call it safely 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 description coverage is 100%, so the schema already documents both parameters, including the exact "X.Y" format and rejected examples. The description adds only a restatement of the example value and a pointer to get_php_versions; baseline 3 applies when the schema carries the burden.
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 ('Wechselt die PHP-Version einer Domain') and immediately scopes it against the sibling get_php_versions, which only reports available/current versions. An agent can distinguish the two without opening either 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?
Explicit routing rule: consult get_php_versions first, and NEVER guess a version. It also gives a concrete reason for the exclusion (the switch attempt may surface as a customer confirmation prompt), plus the precondition that unselectable versions are rejected up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dns_recordDNS-Eintrag ändernADestructiveInspect
Ändert EINEN bestehenden DNS-Eintrag einer Domain (Typen A, AAAA, CNAME, TXT, MX, SRV, CAA) — etwa die IP einer Website, ein MX-Ziel, einen SPF-Wert oder den Port eines SRV-Eintrags. Der Typ eines Eintrags lässt sich nicht ändern (dafür delete_dns_record und add_dns_record), NS und SOA lassen sich nie ändern. Ablauf: get_dns_records frisch abrufen, den Eintrag mit seiner Kennung (record_id) und seinen bisherigen Angaben als "alt" übernehmen (genau so, wie er geliefert wurde; opt ist bei MX die Priorität, bei SRV "Priorität Gewicht Port", bei CAA "Flag Art") und die NEUEN Angaben wie bei add_dns_record angeben (alle Felder des neuen Eintrags, nicht nur die geänderten). Der Server prüft, ob der Eintrag hinter der Kennung noch genau derselbe ist; ist er inzwischen geändert oder gelöscht worden, wird nichts geschrieben. Die Änderung wird als Löschen und Neuanlegen ausgeführt, deshalb ändert sich die Kennung — danach get_dns_records neu abrufen. Eine falsche Änderung kann Mailzustellung oder Erreichbarkeit der Website sofort beeinträchtigen — nenne dem Kunden alten und neuen Wert und lass ihn bestätigen.
| Name | Required | Description | Default |
|---|---|---|---|
| alt | Yes | Der Eintrag so, wie get_dns_records ihn zuletzt geliefert hat. Daran erkennt der Server, ob er inzwischen geändert wurde | |
| art | No | Nur CAA: neue Art | |
| host | No | Neuer Name VOR der Domain, ohne den Domainnamen ("www", "_dmarc", "@" für die Domain selbst) — wie bei add_dns_record. Bei SRV nicht angeben | |
| port | No | Nur SRV: neuer Port, ganze Zahl 1–65535, als Zahl und nicht als Text | |
| type | Yes | Typ des Eintrags; muss dem Typ von "alt" entsprechen | |
| wert | No | Nur CAA: neuer Wert (Domain der Zertifizierungsstelle, ";" oder bei iodef "mailto:"/"https://"-Adresse) | |
| ziel | No | Nur SRV: neues Ziel, Servername (der abschließende Punkt wird ergänzt) | |
| value | No | Neuer Wert: IP-Adresse (A/AAAA), Hostname (CNAME/MX) oder Text (TXT), höchstens 2048 Zeichen. Bei SRV und CAA nicht angeben | |
| dienst | No | Nur SRV: neuer Dienst mit führendem Unterstrich, z. B. "_sip" | |
| domain | Yes | Die Domain, z. B. example.de | |
| gewicht | No | Nur SRV: neues Gewicht, ganze Zahl 0–65535 | |
| priority | No | Nur MX: neue Priorität, ganze Zahl 0–65535 (z. B. 10) | |
| protokoll | No | Nur SRV: neues Protokoll | |
| record_id | Yes | Kennung des Eintrags, genau wie von get_dns_records geliefert — keine geratene Zahl, und keine aus einer früheren Antwort | |
| prioritaet | No | Nur SRV: neue Priorität, ganze Zahl 0–65535 | |
| bestaetigung | No | Nur für geschützte Einträge (MX, SPF, DKIM, DMARC, A/AAAA der Hauptdomain und von www, sowie die Ziele eines MX): der VOLLE Name des Eintrags, genau wie ihn die Fehlermeldung nennt (Feld required_name). Ohne diese Angabe lehnt der Server mit confirmation_required ab und ändert nichts. Den Namen nur setzen, nachdem der Kunde die Änderung ausdrücklich bestätigt hat — nie vorsorglich mitschicken. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: the server performs an optimistic-concurrency check against "alt" and writes nothing if the record changed or was deleted, the update is implemented as delete+recreate so record_id changes, and protected records (MX, SPF, DKIM, DMARC, apex/www A/AAAA, MX targets) require a bestaetigung. It also names the concrete blast radius (Mailzustellung, Erreichbarkeit der Website) and the confirmation duty toward the customer.
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?
Front-loaded with the core action and record types, then the constraints and workflow; nearly every sentence carries a constraint an agent needs. It is a single dense paragraph without line breaks for the workflow, confirmation and warning segments, which hurts scannability for a 16-parameter tool.
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 16-parameter, nested-object mutation with no output schema, the description supplies everything an agent needs: the precondition (fresh read), the idempotency/verification model, the postcondition (new record_id, refetch), the protected-record confirmation gate, and the risk statement. No behavioral gap is left to the schema or annotations.
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 baseline is 3, but the description adds real semantics on top: "alt" must be the record exactly as delivered (the schema says this too, but the description ties it to the concurrency check), and the new values must include ALL fields of the new record, not just the changed ones — a non-obvious constraint. The type-specific "opt" encoding is restated from the schema rather than extended.
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 (ändert EINEN bestehenden DNS-Eintrag) and enumerates the seven supported record types plus concrete examples (IP einer Website, MX-Ziel, SPF-Wert, SRV-Port). It explicitly contrasts itself with add_dns_record and delete_dns_record, so an agent can distinguish it from siblings without opening a 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?
Gives explicit when-not conditions (type cannot be changed → use delete_dns_record + add_dns_record; NS/SOA never editable) and a numbered workflow: fetch fresh via get_dns_records, pass record_id and previous values as "alt", supply all new fields like add_dns_record, then refetch. Alternatives and prerequisites are named rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_wordpress_coreWordPress aktualisierenADestructiveInspect
Aktualisiert den WordPress-Core auf die neueste Version. Erstellt davor automatisch ein Sicherheits-Backup und weist dessen Vorhandensein nach — lässt es sich nicht erstellen oder nicht nachweisen, wird NICHT aktualisiert. Ein Core-Update kann bis zu 30 Minuten dauern — falls die Bestätigung nicht rechtzeitig eintrifft, meldet das Tool ehrlich "unverified" statt fälschlich Erfolg oder Fehlschlag zu behaupten; in dem Fall get_wordpress_status später separat prüfen.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen auf derselben Domain: welche gemeint ist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive=true and openWorld=true, and the description goes well beyond them: it promises an automatic pre-update backup, refuses to update if the backup can't be created or verified, warns the operation can take up to 30 minutes, and explains the honest 'unverified' outcome on timeout. This is exactly the behavioral context an agent needs for a destructive, long-running operation.
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 action, then the safety guarantee, then the timing/timeout behavior. Every sentence carries distinct, non-redundant information and none is padding.
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?
There is no output schema, and the description compensates by explaining the possible outcome states ('unverified' vs success/failure) and the recommended follow-up. For a destructive long-running tool, nothing essential to correct invocation 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 description coverage is 100% with only two parameters (domain, site_url), both fully documented in the schema. The description adds no additional parameter semantics, so the baseline 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?
States a specific verb and resource ('Aktualisiert den WordPress-Core') plus the target ('auf die neueste Version'), which an agent can distinguish from the sibling update_wordpress_item (items like plugins/themes). The purpose is unambiguous 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?
Gives clear triggering context and names the follow-up tool get_wordpress_status for the timeout case. However, it never explicitly distinguishes this from the sibling update_wordpress_item or states when NOT to run a core update, so a full 5 for explicit alternatives is not warranted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_wordpress_itemPlugin oder Theme aktualisierenADestructiveInspect
Aktualisiert EIN einzelnes WordPress-Plugin oder -Theme (slug aus get_outdated_plugins oder get_wordpress_plugins). Der Slug wird zuerst gegen die tatsächlich installierten Erweiterungen geprüft — ist er dort nicht zu finden, bricht das Tool ab, OHNE einen der drei Backup-Plätze zu verbrauchen. Danach wird ein Sicherheits-Backup erstellt und dessen Vorhandensein nachgewiesen; lässt es sich nicht erstellen oder nicht nachweisen, wird NICHT aktualisiert. Nach dem Update wird die tatsächlich installierte Version auf der Installation NACHGELESEN und genannt — „aktualisiert" allein wird nie behauptet. Lässt sie sich nicht nachlesen, sagt die Antwort das ausdrücklich, statt Erfolg oder Fehlschlag zu behaupten. Nie "alle auf einmal", immer nur ein Element pro Aufruf.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Der Plugin-/Theme-Slug, z. B. "litespeed-cache" (siehe get_outdated_plugins oder get_wordpress_plugins) | |
| domain | Yes | Die Domain, z. B. example.de | |
| site_url | No | Bei mehreren WordPress-Installationen auf derselben Domain: welche gemeint ist | |
| item_type | Yes | Ob ein Plugin oder ein Theme aktualisiert werden soll |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructive/openWorld annotations: it discloses slug pre-validation that aborts without consuming one of only three backup slots (a quota the agent cannot see anywhere else), mandatory verified safety backup with refusal to update on failure, and post-update read-back of the installed version with explicit honest-failure reporting.
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?
Front-loaded with the verb and scope, then sequences the behavior (validate → backup → update → read back) in execution order. Six dense sentences with no filler, though the length is on the high side for a four-parameter tool.
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?
No output schema exists, and the description compensates by describing what the response will contain (read-back version, or an explicit statement that it could not be read). For a destructive, quota-limited mutation the agent has everything needed: preconditions, failure paths, and reporting guarantees.
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 already 100%, so the baseline is 3. The description adds genuine semantics beyond the schema: the slug is validated against actually installed extensions before any work happens, and item_type is effectively constrained to one element per call.
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 ('Aktualisiert EIN einzelnes WordPress-Plugin oder -Theme') with explicit single-item scope, and names the sibling tools that supply the slug (get_outdated_plugins, get_wordpress_plugins). An agent can distinguish this from start_bulk_wordpress_update or update_wordpress_core from the description alone.
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?
Gives clear preconditions (slug must originate from get_outdated_plugins or get_wordpress_plugins) and an explicit exclusion: 'Nie "alle auf einmal", immer nur ein Element pro Aufruf.' It stops short of naming start_bulk_wordpress_update as the alternative for multi-item updates, so the routing is implied rather than spelled out.
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.
1 tool update
- Removed
set_dns_ttl
2 tool updates
- Added
set_dns_ttl - Added
set_email_autoreply
5 tool updates
- Changed
delete_wordpress_item1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"Slug (Ordnername) des Plugins oder Themes, z. B. \"hello-dolly\" — nicht der Anzeigename. Höchstens 100 Zeichen aus Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich; das erste Zeichen ist ein Buchstabe oder eine Ziffer, kein \"..\" und kein Schrägstrich. Der Slug muss auf der Installation vorhanden sein, sonst wird nichts gelöscht (siehe get_outdated_plugins; Slug sonst beim Kunden erfragen)."New value: +"Slug (Ordnername) des Plugins oder Themes, z. B. \"hello-dolly\" — nicht der Anzeigename. Höchstens 100 Zeichen aus Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich; das erste Zeichen ist ein Buchstabe oder eine Ziffer, kein \"..\" und kein Schrägstrich. Der Slug muss auf der Installation vorhanden sein, sonst wird nichts gelöscht (Slug-Quelle: get_wordpress_plugins; siehe auch get_outdated_plugins)."
- Added
get_wordpress_plugins - Changed
set_wordpress_plugin_state1 field changed- changed
Input schema / properties / plugin / descriptionPrevious value: -"Slug des Plugins, z. B. \"woocommerce\" — nicht der Anzeigename. Es gibt derzeit KEIN Werkzeug, das alle installierten Plugins nennt: get_outdated_plugins zeigt nur die mit verfügbarem Update, get_wordpress_status nennt gar keine Namen, nur den Zähler plugins_to_update. Ist der Slug nicht bekannt, beim Kunden nachfragen statt zu raten."New value: +"Slug des Plugins, z. B. \"woocommerce\" — nicht der Anzeigename. Alle installierten Plugins mit Slug nennt get_wordpress_plugins (get_outdated_plugins zeigt nur die mit verfügbarem Update, get_wordpress_status nennt gar keine Namen, nur den Zähler plugins_to_update). Ist der Slug nicht bekannt, dort nachsehen statt zu raten."
- Changed
start_bulk_wordpress_update1 field changed- changed
Input schema / properties / sites / items / properties / items / items / properties / slug / descriptionPrevious value: -"Der Plugin-/Theme-Slug, z. B. \"litespeed-cache\" (siehe get_outdated_plugins)"New value: +"Der Plugin-/Theme-Slug, z. B. \"litespeed-cache\" (siehe get_outdated_plugins oder get_wordpress_plugins)"
- Changed
update_wordpress_item1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"Der Plugin-/Theme-Slug, z. B. \"litespeed-cache\" (siehe get_outdated_plugins)"New value: +"Der Plugin-/Theme-Slug, z. B. \"litespeed-cache\" (siehe get_outdated_plugins oder get_wordpress_plugins)"
3 tool updates
- Changed
create_protected_directory1 field changed- changed
Input schema / properties / directory / descriptionPrevious value: -"Zu schützendes Verzeichnis, mit führendem Schrägstrich, je Namensteil höchstens 60 Zeichen. Erlaubt sind nur Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein \"..\" und kein Schrägstrich am Ende. Auch \"/\" allein geht nicht; ein ganzer Auftritt lässt sich so nicht schützen. gültig: \"/intern\", \"/intern/kunden\", \"/Intern-2024\". abgewiesen: \"/geschützt\", \"/mein ordner\", \"intern\", \"/intern/\", \"/\"."New value: +"Zu schützendes Verzeichnis, mit führendem Schrägstrich, je Namensteil höchstens 60 Zeichen. Erlaubt sind nur Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein Schrägstrich am Ende. Namensteile \".\" und \"..\" werden abgelehnt (kein \"/intern/./x\", kein \"/intern/..\"), und \"..\" ist auch irgendwo im Namen verboten (kein \"/a..b\"). Auch \"/\" allein geht nicht; ein ganzer Auftritt lässt sich so nicht schützen. WordPress-Systemordner (wp-admin, wp-includes, wp-content) werden in JEDEM Namensteil abgelehnt, ohne Beachtung der Groß-/Kleinschreibung, auch bei einer Installation im Unterordner (z. B. \"/blog/wp-admin\"): Der Passwortschutz von Plesk gilt für den ganzen Ordner und lässt sich nicht für einzelne Dateien aufheben, er würde sonst die Website oder die Anmeldung kaputt machen (z. B. admin-ajax.php, das Besucher für Warenkorb und Formulare brauchen). gültig: \"/intern\", \"/intern/kunden\", \"/Intern-2024\". abgewiesen: \"/geschützt\", \"/mein ordner\", \"intern\", \"/intern/\", \"/\", \"/wp-admin\", \"/blog/wp-admin\", \"/intern/./x\", \"/a..b\"."
- Added
delete_wordpress_item - Changed
remove_protected_directory1 field changed- changed
Input schema / properties / directory / descriptionPrevious value: -"Das geschützte Verzeichnis, mit führendem Schrägstrich und in derselben Schreibweise wie beim Anlegen, z. B. \"/intern\" oder \"/httpdocs/kunden\". Erlaubt sind nur Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein \"..\" und kein Schrägstrich am Ende; \"/\" allein wird abgewiesen. Es gibt keinen Weg, die geschützten Verzeichnisse aufzulisten: Der Pfad muss vom Kunden kommen."New value: +"Das geschützte Verzeichnis, mit führendem Schrägstrich und in derselben Schreibweise wie beim Anlegen, z. B. \"/intern\" oder \"/httpdocs/kunden\". Erlaubt sind nur Buchstaben A–Z/a–z, Ziffern, Punkt, Bindestrich, Unterstrich — keine Umlaute, keine Leerzeichen, kein Schrägstrich am Ende; Namensteile \".\" und \"..\" und \"/\" allein werden abgewiesen. Alte Einträge in WordPress-Systemordnern (wp-admin, wp-includes, wp-content), die früher angelegt wurden, lassen sich weiterhin entfernen, nur das Neuanlegen mit create_protected_directory ist dort gesperrt. Es gibt keinen Weg, die geschützten Verzeichnisse aufzulisten: Der Pfad muss vom Kunden kommen."
3 tool updates
- Added
get_bulk_update_status - Added
get_wordpress_overview - Added
start_bulk_wordpress_update
1 tool update
- Changed
add_domain5 fields changed- changed
Input schema / properties / aktion / descriptionPrevious value: -"Standard hinzufuegen. pruefen = DNS einer wartenden Alias-Domain erneut prüfen und/oder ein offenes Zertifikat einer angelegten Domain oder Subdomain nachholen (domain angeben, bei einer Subdomain der volle Name); pfad = Dokumentstamm einer sub_website ändern (domain = vollständiger Name der Subdomain + pfad)"New value: +"Standard hinzufuegen. pruefen = DNS einer wartenden Alias-Domain erneut prüfen und/oder ein offenes Zertifikat einer angelegten Domain oder Subdomain nachholen (domain angeben, bei einer Subdomain der volle Name); pfad = Unterordner einer sub_website ändern (domain = vollständiger Name der Subdomain + unterordner, leer = der Ordner der Subdomain selbst)" - changed
Input schema / properties / art / descriptionPrevious value: -"Pflicht bei hinzufuegen: alias (301 auf die Hauptdomain), sub_website (Subdomain mit eigenem Ordner) oder sub_weiterleitung (Subdomain, 301 auf eine URL)"New value: +"Pflicht bei hinzufuegen: alias (Weiterleitung einer Domain von einem anderen Anbieter, 301 auf die Hauptdomain), sub_website (Subdomain mit eigener Website) oder sub_weiterleitung (Subdomain, 301 auf eine URL)" - changed
Input schema / properties / domain / descriptionPrevious value: -"Bei alias und pruefen: die Alias-Domain, z. B. andere.de (bei pruefen auch der volle Name einer hinzugefügten Subdomain). Bei aktion pfad: der vollständige Name der Subdomain, z. B. shop.example.de"New value: +"Bei alias und pruefen: die weiterzuleitende Domain bei einem anderen Anbieter, z. B. andere.de (bei pruefen auch der volle Name einer hinzugefügten Subdomain). Bei aktion pfad: der vollständige Name der Subdomain, z. B. shop.example.de" - changed
Input schema / properties / pfad / descriptionPrevious value: -"Dokumentstamm der sub_website, relativ zum Paket und ohne führenden Schrägstrich, z. B. shop.example.de/public (Standard <fqdn>); Pflicht bei aktion pfad"New value: +"Veraltet, nur noch Alt-Name für unterordner: gilt nur mit der Vorsilbe <fqdn>/ (z. B. shop.example.de/public wird zu unterordner public); jeden anderen Ordnerpfad gibt es nicht mehr. Besser unterordner verwenden" - added
Input schema / properties / unterordnerAdded value: +{ + "description": "Optional bei sub_website, nur wenn die App einen eigenen Ordner ausliefert: öffentlicher Unterordner relativ unter dem Ordner <fqdn> der Subdomain, z. B. public oder dist (leer = der Ordner <fqdn> selbst). Pflichtangabe bei aktion pfad (leer erlaubt)", + "type": "string" +}
1 tool update
- Changed
add_domain2 fields changed- changed
Input schema / properties / aktion / descriptionPrevious value: -"Standard hinzufuegen. pruefen = DNS einer wartenden Alias-Domain erneut prüfen (domain angeben); pfad = Dokumentstamm einer sub_website ändern (domain = vollständiger Name der Subdomain + pfad)"New value: +"Standard hinzufuegen. pruefen = DNS einer wartenden Alias-Domain erneut prüfen und/oder ein offenes Zertifikat einer angelegten Domain oder Subdomain nachholen (domain angeben, bei einer Subdomain der volle Name); pfad = Dokumentstamm einer sub_website ändern (domain = vollständiger Name der Subdomain + pfad)" - changed
Input schema / properties / domain / descriptionPrevious value: -"Bei alias und pruefen: die Alias-Domain, z. B. andere.de. Bei aktion pfad: der vollständige Name der Subdomain, z. B. shop.example.de"New value: +"Bei alias und pruefen: die Alias-Domain, z. B. andere.de (bei pruefen auch der volle Name einer hinzugefügten Subdomain). Bei aktion pfad: der vollständige Name der Subdomain, z. B. shop.example.de"
2 tool updates
- Added
add_domain - Added
remove_added_domain
1 tool update
- Changed
setup_email_provider12 fields changed- added
Input schema / properties / aktionAdded value: +{ + "description": "Standard umstellen. txt = Bestätigungswert des Anbieters setzen, dkim = DKIM nachreichen, abschliessen = Umzug beenden und IMAP sperren, rueckweg = zurück zu turbopress", + "enum": [ + "umstellen", + "abschliessen", + "rueckweg", + "dkim", + "txt" + ], + "type": "string" +} - added
Input schema / properties / anbieter_bestaetigtAdded value: +{ + "description": "Pflicht true bei umstellen: die Domain ist beim Anbieter bestätigt", + "type": "boolean" +} - added
Input schema / properties / bestaetigungAdded value: +{ + "description": "Die vom Kunden selbst getippte Domain; Pflicht bei umstellen, abschliessen und rueckweg", + "type": "string" +} - added
Input schema / properties / dkim1Added value: +{ + "description": "Erster DKIM-Wert (z. B. Microsoft 365 selector1), vom Kunden erfragen", + "type": "string" +} - added
Input schema / properties / dkim2Added value: +{ + "description": "Zweiter DKIM-Wert (z. B. Microsoft 365 selector2), vom Kunden erfragen", + "type": "string" +} - added
Input schema / properties / dkim_schluesselAdded value: +{ + "description": "DKIM-Schlüssel bei Google Workspace, vom Kunden erfragen", + "type": "string" +} - added
Input schema / properties / dkim_selektorAdded value: +{ + "description": "DKIM-Selektor bei Google Workspace (z. B. google), vom Kunden erfragen", + "type": "string" +} - added
Input schema / properties / mxAdded value: +{ + "description": "MX-Wert des Anbieters, nur wenn der Kunde einen abweichenden nennt", + "type": "string" +} - changed
Input schema / properties / provider / descriptionPrevious value: -"Der einzurichtende E-Mail-Anbieter"New value: +"Der Anbieter; Pflicht bei umstellen und txt" - added
Input schema / properties / txtAdded value: +{ + "description": "TXT-Bestätigungswert des Anbieters (aus dessen Admin-Center, vom Kunden erfragen); Pflicht bei aktion txt", + "type": "string" +} - added
Input schema / properties / wegAdded value: +{ + "description": "Standard umzug (Mails bleiben nutzbar). neu schaltet den Maildienst bei turbopress ab (Postfächer bleiben, IMAP gesperrt)", + "enum": [ + "umzug", + "neu" + ], + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "domain", - "provider" -]New value: +[ + "domain" +]
1 tool update
- Added
get_email_client_settings
2 tool updates
- Changed
add_dns_record12 fields changed- added
Input schema / properties / artAdded value: +{ + "description": "Nur CAA: \"issue\" erlaubt einer Zertifizierungsstelle Zertifikate, \"issuewild\" Wildcard-Zertifikate, \"iodef\" nennt eine Meldeadresse", + "enum": [ + "issue", + "issuewild", + "iodef" + ], + "type": "string" +} - added
Input schema / properties / dienstAdded value: +{ + "description": "Nur SRV: der Dienst mit führendem Unterstrich, z. B. \"_sip\", \"_xmpp-client\", \"_autodiscover\"", + "type": "string" +} - added
Input schema / properties / gewichtAdded value: +{ + "description": "Nur SRV: Gewicht, ganze Zahl 0–65535, verteilt die Last bei gleicher Priorität (z. B. 5)", + "maximum": 65535, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / host / descriptionPrevious value: -"NUR der Name VOR der Domain, ohne den Domainnamen — das Hosting-System hängt die Zone selbst an und prüft nicht, ob sie schon dasteht. Gültig: \"www\", \"_dmarc\", \"selector1._domainkey\", \"autodiscover\", oder \"@\" für die Domain selbst. Microsoft 365, Google Workspace und Cloudflare geben DKIM- und DMARC-Hosts dagegen als VOLLSTÄNDIGEN Namen heraus (\"selector1._domainkey.example.com\", \"_dmarc.example.com\"), weil das der Name ist, der später abgefragt wird — daraus hier nur den Teil vor der Domain übernehmen: aus \"selector1._domainkey.example.com\" wird \"selector1._domainkey\", der Domainname allein (\"example.com\") wird \"@\". Wird der Domainname trotzdem mitgeschickt, schneidet der Server ihn ab und die Antwort sagt ausdrücklich, welcher Name entstanden ist; ohne dieses Abschneiden entstünde \"selector1._domainkey.example.com.example.com\" — ein Eintrag, der als Erfolg gemeldet wird, aber nie abgefragt wird und die Mailauthentifizierung stillschweigend kaputt lässt. Dem Kunden deshalb immer den Namen nennen, der laut Antwort tatsächlich eingetragen wurde, und nicht den, den er genannt hat. Höchstens 255 Zeichen, gezählt nach dem Abschneiden"New value: +"NUR der Name VOR der Domain, ohne den Domainnamen — das Hosting-System hängt die Zone selbst an und prüft nicht, ob sie schon dasteht. Gültig: \"www\", \"_dmarc\", \"selector1._domainkey\", \"autodiscover\", oder \"@\" für die Domain selbst. Microsoft 365, Google Workspace und Cloudflare geben DKIM- und DMARC-Hosts dagegen als VOLLSTÄNDIGEN Namen heraus (\"selector1._domainkey.example.com\", \"_dmarc.example.com\"), weil das der Name ist, der später abgefragt wird — daraus hier nur den Teil vor der Domain übernehmen: aus \"selector1._domainkey.example.com\" wird \"selector1._domainkey\", der Domainname allein (\"example.com\") wird \"@\". Wird der Domainname trotzdem mitgeschickt, schneidet der Server ihn ab und die Antwort sagt ausdrücklich, welcher Name entstanden ist; ohne dieses Abschneiden entstünde \"selector1._domainkey.example.com.example.com\" — ein Eintrag, der als Erfolg gemeldet wird, aber nie abgefragt wird und die Mailauthentifizierung stillschweigend kaputt lässt. Dem Kunden deshalb immer den Namen nennen, der laut Antwort tatsächlich eingetragen wurde, und nicht den, den er genannt hat. Höchstens 255 Zeichen, gezählt nach dem Abschneiden. Bei CAA der Name, für den die Regel gilt (\"@\" für die Domain selbst); bei SRV nicht angeben (der Name ergibt sich aus dienst und protokoll)" - added
Input schema / properties / portAdded value: +{ + "description": "Nur SRV: Port, ganze Zahl 1–65535, als Zahl und nicht als Text (z. B. 5060)", + "maximum": 65535, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / prioritaetAdded value: +{ + "description": "Nur SRV: Priorität, ganze Zahl 0–65535, kleinere Zahl wird zuerst versucht (z. B. 10)", + "maximum": 65535, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / protokollAdded value: +{ + "description": "Nur SRV: das Protokoll", + "enum": [ + "_tcp", + "_udp", + "_tls" + ], + "type": "string" +} - changed
Input schema / properties / type / enumPrevious value: -[ - "A", - "AAAA", - "CNAME", - "TXT", - "MX" -]New value: +[ + "A", + "AAAA", + "CNAME", + "TXT", + "MX", + "SRV", + "CAA" +] - changed
Input schema / properties / value / descriptionPrevious value: -"Zielwert des Records: eine IP-Adresse (A/AAAA), ein Hostname (CNAME/MX) oder der vollständige Textwert (TXT, z. B. \"v=spf1 include:_spf.google.com ~all\" oder ein DKIM-Wert \"v=DKIM1; k=rsa; p=…\"). Höchstens 2048 Zeichen. DKIM-Werte unverändert so übernehmen, wie der Anbieter sie ausgibt — auch in der geteilten Schreibweise mit Anführungszeichen (\"v=DKIM1; k=rsa; \" \"p=…\"), die wird beim Eintragen automatisch zu einem Wert zusammengefügt. Die 2048 Zeichen zählen für den zusammengefügten Wert"New value: +"Zielwert des Records: eine IP-Adresse (A/AAAA), ein Hostname (CNAME/MX) oder der vollständige Textwert (TXT, z. B. \"v=spf1 include:_spf.google.com ~all\" oder ein DKIM-Wert \"v=DKIM1; k=rsa; p=…\"). Höchstens 2048 Zeichen. DKIM-Werte unverändert so übernehmen, wie der Anbieter sie ausgibt — auch in der geteilten Schreibweise mit Anführungszeichen (\"v=DKIM1; k=rsa; \" \"p=…\"), die wird beim Eintragen automatisch zu einem Wert zusammengefügt. Die 2048 Zeichen zählen für den zusammengefügten Wert. Bei SRV und CAA nicht angeben" - added
Input schema / properties / wertAdded value: +{ + "description": "Nur CAA: bei issue/issuewild die Domain der Zertifizierungsstelle (z. B. \"letsencrypt.org\") oder \";\" für \"niemand\"; bei iodef eine Adresse mit \"mailto:\" oder \"https://\"", + "type": "string" +} - added
Input schema / properties / zielAdded value: +{ + "description": "Nur SRV: Servername, auf dem der Dienst läuft, z. B. \"sip.example.com\"; der abschließende Punkt wird ergänzt. Ein einzelner Punkt \".\" heißt: Dienst wird nicht angeboten", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "domain", - "type", - "host", - "value" -]New value: +[ + "domain", + "type" +]
- Added
update_dns_record
1 tool update
- Added
clean_wordpress_database
1 tool update
- Added
set_wordpress_permalinks
2 tool updates
- Changed
delete_dns_record1 field changed- added
Input schema / properties / bestaetigungAdded value: +{ + "description": "Nur für geschützte Einträge (MX, SPF, DKIM, DMARC, A/AAAA der Hauptdomain und von www, sowie die Ziele eines MX): der VOLLE Name des Eintrags, genau wie ihn die Fehlermeldung nennt (Feld required_name). Ohne diese Angabe lehnt der Server mit confirmation_required ab und löscht nichts. NS und SOA lassen sich nie löschen. Den Namen nur setzen, nachdem der Kunde das Löschen ausdrücklich bestätigt hat — nie vorsorglich mitschicken.", + "type": "string" +}
- Changed
set_spam_filter1 field changed- added
Input schema / properties / bestaetigungAdded value: +{ + "description": "Nur bei action=\"del\" (bei eingeschaltetem Filter): die vollständige Adresse des Postfachs, z. B. info@example.de. Ohne sie lehnt der Server mit confirmation_required ab und ändert nichts. Nur setzen, nachdem der Kunde das endgültige Löschen erkannter Spam-Mails ausdrücklich bestätigt hat — nie vorsorglich mitschicken.", + "type": "string" +}
1 tool update
- Changed
search_domain_error_log1 field changed- changed
Input schema / properties / hours / descriptionPrevious value: -"Zeitraum in Stunden rückwärts, Standard 24, höchstens 168"New value: +"Zeitraum in Stunden rückwärts, Standard 24, höchstens 168 (größere Werte dauern deutlich länger)"
1 tool update
- Added
delete_email_account
1 tool update
- Changed
clear_wordpress_cache1 field changed- added
Input schema / properties / scopeAdded value: +{ + "description": "Was geleert wird: \"seite\" = Seiten-Cache (LiteSpeed), \"objekt\" = Objekt-Cache (Valkey), \"beides\" = beide. Standard: seite.", + "enum": [ + "seite", + "objekt", + "beides" + ], + "type": "string" +}
93 tool updates
- Changed
activate_turbometrics1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
add_dns_record1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
apply_wordpress_security_measure1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
check_domain_availability1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
check_wordpress_integrity1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
clear_wordpress_cache1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
close_support_ticket1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_cronjob1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_database1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_database_user1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_email_account1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_ftp_account1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_protected_directory1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_ssl_certificate1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_staging_site1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_support_ticket1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
create_wordpress_backup1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
delete_cronjob1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
delete_database1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
delete_database_user1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
delete_dns_record1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
delete_ftp_account1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
delete_wordpress_backup1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_begin1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_git1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_import_asset1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_list1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_preview1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_publish1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_put_file1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
deploy_rollback1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
diagnose_website1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
fix_https_redirect1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_backup_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_cloudlinux_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_cronjobs1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_databases1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_dns_records1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_dns_security1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_domain_redirects1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_domains1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_email_accounts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_email_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_ftp_accounts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_hosting_packages1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_hotlink_protection1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_invoices1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_outdated_plugins1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_performance_alerts1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_performance_findings1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_performance_score1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_php_versions1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_security_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_spam_filter1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_ssl_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_storage_breakdown1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_support_tickets1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_webmail_url1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_website_report1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_webspace_usage1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_wordpress_backups1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_wordpress_hardening1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_wordpress_sites1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
get_wordpress_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
install_wordpress_plugin1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
list_wordpress_admins1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
prepare_domain_order1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
prepare_hosting_order1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
redirect_domain1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_domain_redirect1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_email_alias1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
remove_protected_directory1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
reply_to_ticket1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
reset_email_password1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
reset_ftp_password1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
reset_wordpress_admin_password1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
restore_wordpress_backup1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
revert_wordpress_security_measure1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
scan_wordpress_vulnerabilities1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_domain_error_log1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_contact_form1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_email_alias1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_email_forwarding1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_hotlink_protection1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_site_meta1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_spam_filter1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
set_wordpress_plugin_state1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
setup_email_provider1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
start_performance_scan1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
suggest_domain_alternatives1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
switch_php_version1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_wordpress_core1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
update_wordpress_item1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
Publisher details
- Operator
- Dipalino UG (haftungsbeschränkt), operator of turbopress, Dresden, Germany · Publisher source
- Operator website
- https://turbopress.de/ · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://panel.turbopress.de/knowledgebase/168/KI-Zugriff-Dein-Hosting-per-Claude-oder-ChatGPT-abfragen.html
- Trust center
- https://turbopress.de/dsgvo-hosting/
- Restrictions
- Requires a turbopress hosting account (customers only, OAuth sign-in). The website publishing tools (AI Launch) require the AI Launch plan.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm55 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1618 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.