Skip to main content
Glama

DNS-Eintrag hinzufügen

add_dns_record
Destructive

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.

Input Schema

NameRequiredDescriptionDefault
artNoNur CAA: "issue" erlaubt einer Zertifizierungsstelle Zertifikate, "issuewild" Wildcard-Zertifikate, "iodef" nennt eine Meldeadresse
hostNoNUR 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)
portNoNur SRV: Port, ganze Zahl 1–65535, als Zahl und nicht als Text (z. B. 5060)
typeYesRecord-Typ
wertNoNur CAA: bei issue/issuewild die Domain der Zertifizierungsstelle (z. B. "letsencrypt.org") oder ";" für "niemand"; bei iodef eine Adresse mit "mailto:" oder "https://"
zielNoNur 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
valueNoZielwert 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
dienstNoNur SRV: der Dienst mit führendem Unterstrich, z. B. "_sip", "_xmpp-client", "_autodiscover"
domainYesDie Domain, z. B. example.com
gewichtNoNur SRV: Gewicht, ganze Zahl 0–65535, verteilt die Last bei gleicher Priorität (z. B. 5)
priorityNoPriorität/Gewichtung (nur relevant, meist erforderlich bei MX-Records, z. B. 10)
protokollNoNur SRV: das Protokoll
prioritaetNoNur SRV: Priorität, ganze Zahl 0–65535, kleinere Zahl wird zuerst versucht (z. B. 10)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • addedInput schema / properties / art
      Added value: +{
      +  "description": "Nur CAA: \"issue\" erlaubt einer Zertifizierungsstelle Zertifikate, \"issuewild\" Wildcard-Zertifikate, \"iodef\" nennt eine Meldeadresse",
      +  "enum": [
      +    "issue",
      +    "issuewild",
      +    "iodef"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / dienst
      Added value: +{
      +  "description": "Nur SRV: der Dienst mit führendem Unterstrich, z. B. \"_sip\", \"_xmpp-client\", \"_autodiscover\"",
      +  "type": "string"
      +}
    • addedInput schema / properties / gewicht
      Added 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"
      +}
    • changedInput schema / properties / host / description
      Previous 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)"
    • addedInput schema / properties / port
      Added value: +{
      +  "description": "Nur SRV: Port, ganze Zahl 1–65535, als Zahl und nicht als Text (z. B. 5060)",
      +  "maximum": 65535,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / prioritaet
      Added value: +{
      +  "description": "Nur SRV: Priorität, ganze Zahl 0–65535, kleinere Zahl wird zuerst versucht (z. B. 10)",
      +  "maximum": 65535,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / protokoll
      Added value: +{
      +  "description": "Nur SRV: das Protokoll",
      +  "enum": [
      +    "_tcp",
      +    "_udp",
      +    "_tls"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "A",
      -  "AAAA",
      -  "CNAME",
      -  "TXT",
      -  "MX"
      -]New value: +[
      +  "A",
      +  "AAAA",
      +  "CNAME",
      +  "TXT",
      +  "MX",
      +  "SRV",
      +  "CAA"
      +]
    • changedInput schema / properties / value / description
      Previous 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"
    • addedInput schema / properties / wert
      Added 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"
      +}
    • addedInput schema / properties / ziel
      Added 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"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "domain",
      -  "type",
      -  "host",
      -  "value"
      -]New value: +[
      +  "domain",
      +  "type"
      +]
  2. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. First observed

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources