Tools-Referenz

Alle verfügbaren MCP-Tools in Neleto

Neleto stellt 40 MCP-Tools in 8 Kategorien bereit. Jeder Tool-Aufruf erfordert einen Authorization: Bearer <token>-Header.

Alle id-Felder für Dateien sind UUIDs (Strings), während IDs für Seiten, Layouts, Komponenten, Beiträge und Events Ganzzahlen sind.
List- & Such-Antworten sind Objekte der Form { "items": [...], "total": n } — niemals ein reines Array auf oberster Ebene.
Update-Tools ersetzen den gesamten Datensatz.page_update, layout_update und component_update überschreiben jedes Feld; jedes weggelassene Feld wird auf seinen leeren/Standardwert zurückgesetzt, nicht unverändert gelassen. Lade den Datensatz zuerst mit dem passenden *_get, wende deine Änderungen an und sende das vollständige Objekt zurück.
Element-data vs. Formular-defaultValue. In einem Komponenten-Template liest {{ properties.x }} das data[x] des Elements und rendert leer, wenn der Schlüssel fehlt — defaultValue ist nur ein Editor-Startwert und kein Fallback beim Rendern. Neue Elemente werden aus dem defaultValue jeder Property vorbefüllt, aber setze data explizit für alles, worauf du dich verlässt. Rendere Kind-Elemente mit {{ render_elements(children) }} — demselben Helper wie {{ render_elements(page.elements) }} und {{ render_elements(page.layout.elements) }}. Übersetzbare Felder (textarea / richtext / markdown) werden nur gespeichert, wenn page_create / page_update mit einem language-Code aufgerufen wird, und die Element-Reihenfolge ergibt sich aus der Array-Position (ein zurückgegebenes order von null ist bedeutungslos).
Jedes Element braucht eine tempId — auch bestehende. Bei page_update / layout_update muss jeder Eintrag des elements-Arrays eine tempId (String) enthalten, selbst Elemente, die bereits eine echte numerische id haben. Fehlt sie, wird die gesamte Anfrage mit missing field tempId abgelehnt. page_get / layout_get liefern jedes Element bereits mit gesetzter tempId (bestehende Elemente als "old-<id>") — diesen Wert unverändert übernehmen und zurücksenden. Das elements-Array hat Replace-Semantik: jedes bestehende Element, das du weglässt, wird stillschweigend gelöscht (ohne Warnung). Um ein Element zu behalten, sende es erneut; um eines zu löschen, entferne es aus elementsund trage seine numerische id in deletedElements ein.

Seiten

Tools zur Verwaltung von CMS-Seiten.

page_list

Alle verfügbaren Seiten im CMS auflisten.

ids
integer[]
Nach bestimmten Seiten-IDs filtern.
limit
integer
Maximale Anzahl an Ergebnissen.
offset
integer
Anzahl der zu überspringenden Ergebnisse (für Paginierung).
language
"en" | "de"
Nach Sprache filtern.

page_get

Eine einzelne Seite mit Layout, Elementen und übersetztem Inhalt laden.

id
integer required
Die Seiten-ID.
lang
"en" | "de"
Sprache für übersetzte Inhalte.

page_create

Eine neue Seite erstellen, inklusive Tags, Meta-Tags und Elementen.

title
string required
Seitentitel.
route
string required
URL-Pfad der Seite. Muss mit / beginnen (z.B. /ueber-uns).
useTailwind
boolean required
Ob Tailwind CSS für diese Seite aktiviert sein soll.
metaTags
object[] required
Array von Meta-Tag-Objekten.
tags
object[] required
Array von Tag-Objekten.
elements
object[] required
Array von Seiten-Elementen.
deletedElements
integer[] required
IDs zu löschender Elemente (bei neuen Seiten leeres Array [] verwenden).
template
string
Eigenes Handlebars-Template für die Seite.
renderMode
"prerendered" | "dynamic"
Render-Modus der Seite.
layoutId
integer | null
Zugewiesenes Layout der Seite.
status
"draft" | "public" | null
Veröffentlichungsstatus.
description
string | null
Seitenbeschreibung für Meta-Tags.
language
"en" | "de" | null
Sprache der Seite.

page_update

Eine bestehende Seite aktualisieren. Gleiche Felder wie page_create, zusätzlich:

id
integer required
Die ID der zu aktualisierenden Seite.

page_delete

Eine Seite soft-löschen.

id
integer required
Die ID der zu löschenden Seite.

page_duplicate

Eine Seite duplizieren mit neuem Pfad und Titel.

id
integer required
Die ID der zu duplizierenden Seite.
title
string required
Titel der neuen Seite.
route
string required
URL-Pfad der neuen Seite. Muss mit / beginnen (z.B. /ueber-uns-kopie).

Layouts

Layouts sind wiederverwendbare Templates, die mehreren Seiten zugewiesen werden können.

layout_list

Alle Seiten-Layouts auflisten.

limit
integer
Maximale Anzahl an Ergebnissen.
offset
integer
Anzahl der zu überspringenden Ergebnisse.
language
"en" | "de"
Nach Sprache filtern.

layout_get

Ein einzelnes Layout mit Elementbaum laden.

id
integer required
Die Layout-ID.
lang
"en" | "de"
Sprache für übersetzte Elementinhalte.

layout_create

Ein wiederverwendbares Layout mit Template, Style, Script und fixen Elementen erstellen.

name
string required
Anzeigename des Layouts.
elements
object[] required
Array von Element-Objekten im Layout.
deletedElements
integer[] required
IDs zu löschender Elemente (bei neuen Layouts [] verwenden).
icon
string | null
Im Editor angezeigtes Icon des Layouts. Format ist tabler:<icon-name> — ein Icon aus dem Tabler-Set (Iconify-Collection-Präfix tabler), genau das, was der Icon-Picker im Admin speichert. Die gefüllte Variante hängt ein -filled an. Beispiele: tabler:layout-grid, tabler:layout-navbar, tabler:columns. Ein bloßes Wort ohne das tabler:-Präfix löst nicht auf.
template
string
Handlebars-Template-String.
script
string
JavaScript für das Layout.
style
string
CSS-Styles für das Layout.
language
"en" | "de" | null
Sprachkontext.

layout_update

Ein bestehendes Layout aktualisieren. Gleiche Felder wie layout_create, zusätzlich:

id
integer required
Die ID des zu aktualisierenden Layouts.

layout_delete

Ein Layout soft-löschen.

id
integer required
Die ID des zu löschenden Layouts.

Komponenten

Komponenten sind wiederverwendbare Bausteine, die Redakteure auf Seiten einfügen können.

component_list

Alle wiederverwendbaren CMS-Komponenten auflisten.

Keine Parameter erforderlich.

component_get

Eine einzelne Komponente anhand der ID laden.

id
integer required
Die Komponenten-ID.

Komponenten nach Form-Label suchen.

q
string required
Suchbegriff.

component_used_by_elements

Alle Element-Instanzen auflisten, die eine Komponente verwenden.

id
integer required
Die ID der Komponente.

component_create

Eine neue Komponente erstellen.

icon
string required
Im Editor angezeigtes Icon der Komponente. Format ist tabler:<icon-name> — ein Icon aus dem Tabler-Set (Iconify-Collection-Präfix tabler), genau das, was der Icon-Picker im Admin speichert. Die gefüllte Variante eines Icons hängt ein -filled an den Namen. Beispiele: tabler:award-filled, tabler:message-circle-2, tabler:layout-grid. Ein bloßes Wort ohne das tabler:-Präfix löst nicht auf und rendert kein Icon. (Die Klassenform i-tabler-<icon-name> rendert ebenfalls, aber tabler:<icon-name> ist der kanonische Wert.)
form
object required
Formulardefinition mit den Properties der Komponente.
style
string required
CSS-Styles der Komponente.
script
string
JavaScript der Komponente. Optional — weglassen oder "" übergeben für eine Komponente ohne Skript.
template
string required
Handlebars-Template-String der Komponente. Formularwerte mit {{ properties.<key> }} rendern, Kind-Elemente mit {{ render_elements(children) }}.
category
"text" | "design" | "layout" | "interactive" | "media" | "misc" required
Kategorie der Komponente.
canHaveChildren
boolean required
Ob Kind-Elemente in diese Komponente verschachtelt werden können.

Bilder (Datei-Relationen). Ein Relationswert ist erst dann eine Datei, wenn du ihn bindest. Binde die Datei aus der Relation heraus und übergib die gebundene Datei zusammen mit einem erforderlichen Options-String an image_path. Ein Aufruf image_path(file) ohne Optionen oder das direkte Übergeben von relations.<id> ohne Binding ist ein harter Render-Fehler — kein leeres src:

{{#if relations.image as file}}
  <img src="{{ image_path(file, "w_1600,f_webp") }}" alt="{{ file.title }}">
{{/if}}

Das liefert /image/user-upload/<file-id>?options=w_1600,f_webp aus. Optionen sind kommagetrennt und werden der Reihe nach angewendet — s_<N> (quadratisch), w_<N>, h_<N>, f_webp|jpeg|png|avif|gif, q_<N> (JPEG-Qualität), e_<t>_<l>_<w>_<h> (Zuschnitt), fit_contain|fit_cover|fit_fill|fit_inside|fit_outside — siehe Image-Scaling. Andere Relations-Helper folgen derselben Bind-zuerst-Regel: post_path(post), event_path(event) und file_path(file) für Downloads. Für eine multiple-Relation mit {{#each relations.<id> as file}} … {{/each}} iterieren.

f_ ist nur das Format — Fit nutzt fit_.f_ setzt das Ausgabeformat (f_webp, f_jpeg, …). Fit/Zuschnitt ist ein separatesfit_-Präfix (fit_cover, fit_contain, …). Es gibt kein f_cover/f_contain — schreibt man eines, wird es als Format interpretiert, schlägt bei der Validierung fehl und liefert einen harten HTTP 400 (kein Fallback auf das Original). fit_ funktioniert außerdem nur zusammen mit einer Größe und muss nach dem w_/h_/s_ in der Options-Zeichenkette stehen. Für einfaches Zuschneiden/Seitenverhältnis lieber CSS object-fit am <img> verwenden — das ist verlässlicher als die fit_-Option.

Builder-Formular-Property (Repeater). Eine builder-Property ist ein Repeater: Der Editor verwaltet ein Array von Zeilen, die alle dieselben Felder haben. Die JSON-Struktur ist leicht falsch zu treffen. Das items-Array der Property-Definition enthält genau einen Eintrag — eine einzelne Zeilen-Vorlage — und die Felder pro Zeile liegen im props-Array dieses Eintrags (nicht als separate items-Einträge):

{
    "id": "items",
    "type": "builder",
    "label": { "en": "Questions", "de": "Fragen" },
    "description": null,
    "hint": null,
    "required": null,
    "defaultValue": [
        { "id": "row1", "data": { "question": "...", "answer": "..." } },
        { "id": "row2", "data": { "question": "...", "answer": "..." } }
    ],
    "items": [
        {
            "id": "question",
            "type": "text",
            "name": "question",
            "label": { "en": "Item", "de": "Item" },
            "icon": null,
            "items": [],
            "data": "",
            "defaultValue": "",
            "property": { "type": "text", "defaultValue": "" },
            "props": [
                {
                    "id": "question",
                    "type": "textarea",
                    "label": { "en": "Question", "de": "Frage" },
                    "defaultValue": null,
                    "description": null,
                    "hint": null,
                    "required": null
                },
                {
                    "id": "answer",
                    "type": "textarea",
                    "label": { "en": "Answer", "de": "Antwort" },
                    "defaultValue": null,
                    "description": null,
                    "hint": null,
                    "required": null
                }
            ]
        }
    ]
}
  • items = genau ein Zeilen-Vorlagen-Objekt. Die tatsächlichen Felder pro Zeile (question, answer, …) sind flache Property-Definitionen in dessen props-Array.
  • Das Zeilen-Vorlagen-Objekt braucht weiterhin die Top-Level-Felder id, name, data, defaultValue, items ([]) und ein property-Objekt ({ type, defaultValue }). Strikt vom Deserializer verlangt werden label, name, data, props; der Rest spiegelt das, was der Admin-Builder-Konfigurationseditor erzeugt — mitschicken, damit die Definition sauber durch die UI läuft.
  • Setze data und defaultValue der Zeilen-Vorlage auf "" (leerer String). Keinen echten Platzhalter-String verwenden: Beim Speichern verteilt der Admin-Builder-Editor die Zeichen eines nicht-leeren Strings als überflüssige numerische Schlüssel ({"0":"H","1":"o",…}) in die data jeder Zeile. Das bricht das Rendering nicht, beschädigt aber die gespeicherten Daten (bekannter Admin-UI-Bug); "" vermeidet das.
  • Zeilenwerte — sowohl der Top-Level-defaultValue der Property als auch data[<propId>] jedes Elements — sind ein Array von { id, data }-Objekten, nicht ein flaches { fieldId: value } pro Zeile: [ { "id": "row1", "data": { "question": "…", "answer": "…" } } ].
  • Im Template die Zeilenwerte über item.data.<fieldId> lesen (nicht item.<fieldId>):
{{#each properties.items as item}}
    {{item.data.question}}
    {{item.data.answer}}
{{/each}}
Reihenfolge der Komponenten-CSS-Injektion ist nicht garantiert. Der style-Block jeder Komponente wird in den <head> gehoben, aber die Reihenfolge, in der die Styles verschiedener Komponenten injiziert werden, folgt nicht zwingend der Seiten-/Element-Reihenfolge. Wenn zwei Komponenten dieselbe Eigenschaft auf einer gemeinsam genutzten Utility-Klasse setzen (z. B. ein geteiltes .wrap plus eine komponentenspezifische Klasse), kann die Kaskade unvorhersehbar auflösen. Komponentenspezifische Overrides mit einem spezifischeren Selektor einschränken (z. B. .meineKomponentenKlasse .wrap { … } statt nur .wrap { … }), damit sie unabhängig von der Injektionsreihenfolge gewinnen.

component_update

Eine bestehende Komponente aktualisieren. Gleiche Felder wie component_create, zusätzlich:

id
integer required
Die ID der zu aktualisierenden Komponente.

component_delete

Eine Komponente und alle verknüpften Element-Instanzen löschen.

id
integer required
Die ID der zu löschenden Komponente.

Blogbeiträge

post_list

Blogbeiträge auflisten.

ids
integer[]
Nach bestimmten Beitrags-IDs filtern.
limit
integer
Maximale Anzahl an Ergebnissen.
offset
integer
Anzahl der zu überspringenden Ergebnisse.

post_get

Einen Blogbeitrag anhand der ID laden.

id
integer required
Die Beitrags-ID.

post_search

Blogbeiträge nach Titel, Beschreibung oder Inhalt suchen.

q
string required
Suchbegriff.

post_create

Einen Blogbeitrag erstellen.

slug
string required
URL-freundlicher Bezeichner des Beitrags.
title
string required
Beitragstitel.
description
string required
Kurzbeschreibung für Übersichtsseiten.
content
string required
Richtext-Inhalt. HTML ist erlaubt.
language
string required
Sprache des Beitrags (z.B. "de" oder "en").
metadata
object required
Metadaten (kann ein leeres Objekt {} sein).
tags
object[] required
Array von Tag-Objekten.
files
object[] required
Array verknüpfter Datei-Objekte.
status
"draft" | "public" | null
Veröffentlichungsstatus.
publishDate
string | null
Veröffentlichungsdatum im ISO 8601 Format.
heroImageId
string | null
UUID des Hero-Bildes.
heroImage
object | null
Hero-Bild-Objekt (Alternative zu heroImageId).

post_update

Einen Blogbeitrag aktualisieren. Gleiche Felder wie post_create, zusätzlich:

id
integer required
Die ID des zu aktualisierenden Beitrags.

post_delete

Einen Blogbeitrag löschen.

id
integer required
Die ID des zu löschenden Beitrags.

Events

event_list

Events auflisten.

ids
integer[]
Nach bestimmten Event-IDs filtern.
limit
integer
Maximale Anzahl an Ergebnissen.
offset
integer
Anzahl der zu überspringenden Ergebnisse.

event_get

Ein Event anhand der ID laden.

id
integer required
Die Event-ID.

Events nach Titel, Beschreibung oder Inhalt suchen.

q
string required
Suchbegriff.

event_today

Alle Events auflisten, die heute stattfinden.

Keine Parameter erforderlich.

event_upcoming

Bevorstehende Events auflisten.

Keine Parameter erforderlich.

event_create

Ein Event erstellen.

slug
string required
URL-freundlicher Bezeichner des Events.
title
string required
Event-Titel.
description
string required
Kurzbeschreibung des Events.
content
string required
Richtext-Inhalt. HTML ist erlaubt.
status
"draft" | "public" required
Veröffentlichungsstatus.
metadata
object required
Metadaten (kann ein leeres Objekt {} sein).
tags
object[] required
Array von Tag-Objekten.
files
object[] required
Array verknüpfter Datei-Objekte.
publishDate
string | null
Veröffentlichungsdatum im ISO 8601 Format.
start
string | null
Startdatum/-zeit im ISO 8601 Format.
end
string | null
Enddatum/-zeit im ISO 8601 Format.
heroImageId
string | null
UUID des Hero-Bildes.
heroImage
object | null
Hero-Bild-Objekt (Alternative zu heroImageId).

event_update

Ein Event aktualisieren. Gleiche Felder wie event_create, zusätzlich:

id
integer required
Die ID des zu aktualisierenden Events.

event_delete

Ein Event löschen.

id
integer required
Die ID des zu löschenden Events.

Dateien

Datei-IDs sind UUIDs (Strings), keine Ganzzahlen.

file_list

Dateien und Ordner auflisten oder eine einzelne Datei mit Inhalt laden. Datei-Datensätze enthalten eine serveUrl — eine absolute …/image/user-upload/<id>-URL, welche die gespeicherten Bytes ausliefert.

path
string | null
Verzeichnispfad auflisten (z.B. "/" für das Stammverzeichnis) oder eine bestimmte Datei per Pfad laden.
mimeType
string[] | null
Nach MIME-Typ filtern (z.B. ["image/jpeg", "image/png"]).
ids
string[] | null
Bestimmte Dateien per UUID laden.

file_get

Eine Datei mit Tags anhand der ID laden. Der Datensatz enthält eine serveUrl — eine absolute …/image/user-upload/<id>-URL, welche die gespeicherten Bytes ausliefert.

id
string required
Die Datei-UUID.

Dateien nach Titel, Beschreibung, Pfad, Status oder MIME-Typ suchen.

q
string | null
Suchbegriff (Titel, Beschreibung oder Pfad).
onlyFiles
boolean | null
Wenn true, werden Ordner aus den Ergebnissen ausgeschlossen.
status
"draft" | "public" | null
Nach Status filtern.
allowedMimeTypes
string[]
Nach erlaubten MIME-Typen filtern.

file_create

Eine Datei, einen Ordner oder einen Remote-Datei-Eintrag erstellen. Lokale Dateien werden leer auf dem Dateisystem angelegt.

type
"folder" | "file" | "remoteFile" required
Art des zu erstellenden Eintrags.
path
string required
Vollständiger Pfad inkl. Dateiname (z.B. /bilder/logo.png).
tags
object[] required
Array von Tag-Objekten.
status
"draft" | "public" | null
Veröffentlichungsstatus.
title
string | null
Anzeigename der Datei.
mimeType
string | null
MIME-Typ der Datei.
description
string | null
Datei-Beschreibung.
metadata
object
Datei-Metadaten.

file_upload

Eine Binärdatei oder ein Bild als base64-kodierten Inhalt hochladen. base64Data akzeptiert sowohl reines base64 als auch eine Data-URI (data:image/jpeg;base64,…). Bei Erfolg enthält die Antwort die gespeicherte Byte-size sowie eine direkt nutzbare serveUrl (absolute …/image/user-upload/<id>-URL); diese URL akzeptiert zusätzlich Größenänderungen im Stil ?options=w_200,f_webp.

Inline-Uploads klein halten. Das base64 wird inline als Tool-Call-Argument übertragen, und große Payloads werden auf dem Weg zum Server leicht beschädigt — die Dekodierung schlägt dann mit Invalid base64Data: Invalid padding oder Invalid symbol at offset N fehl (der angegebene Offset ist nicht verlässlich, um das Problem zu lokalisieren). Etwa unter ~10 KB Rohbytes ist sicher; Payloads im Bereich ~15–48 KB+ werden sporadisch beschädigt. Für alles Größere die Originaldatei über den Admin-Medienmanager (oder einen direkten HTTP-Upload) hochladen und die entstandene Datei per id/Pfad referenzieren, statt sie inline zu übertragen. Ein identisches beschädigtes Payload erneut zu senden schlägt meist gleich fehl — bei Bedarf aus der Quelle neu kodieren.
path
string required
Vollständiger Zielpfad inkl. Dateiname.
base64Data
string required
Dateiinhalt als Base64-kodierter String.
mimeType
string | null
MIME-Typ (z.B. "image/png"). Wird automatisch erkannt wenn nicht angegeben.
status
"draft" | "public" | null
Veröffentlichungsstatus.
title
string | null
Anzeigename.
description
string | null
Datei-Beschreibung.
metadata
object
Datei-Metadaten.
tags
object[] | null
Array von Tag-Objekten.
handleConflicts
boolean | null
Ob Pfadkonflikte automatisch aufgelöst werden sollen.

file_update

Datei-Metadaten oder den Inhalt einer lokalen Datei aktualisieren.

id
string required
Die Datei-UUID.
fileType
"local" | "remote" required
Ob die Datei lokal oder remote gespeichert ist.
tags
object[] required
Aktualisiertes Array von Tag-Objekten.
type
"folder" | "file" | "remoteFile" | null
Eintragstyp ändern.
path
string | null
Neuer Pfad der Datei.
status
"draft" | "public" | null
Veröffentlichungsstatus.
title
string | null
Anzeigename.
mimeType
string | null
MIME-Typ.
description
string | null
Datei-Beschreibung.
metadata
object
Datei-Metadaten.
content
string | null
Neuer Textinhalt für lokale Dateien.

file_delete

Eine oder mehrere Dateien bzw. Ordner löschen.

ids
string[] required
Array von Datei-UUIDs, die gelöscht werden sollen.

file_move

Dateien in einen anderen Ordnerpfad verschieben oder kopieren.

ids
string[] required
Array von Datei-UUIDs.
path
string required
Zielpfad des Ordners (z.B. "/bilder/archiv").
copy
boolean | null
Wenn true, werden die Dateien kopiert statt verschoben.

file_rename

Eine Datei oder einen Ordner umbenennen (letztes Pfadsegment ändern).

id
string required
Die UUID der umzubenennenden Datei.
name
string required
Neuer Datei-/Ordnername (nur das letzte Segment, nicht der vollständige Pfad).

Web-Dateien

Web-Dateien sind statische Textdateien, die im Root deiner Website bereitgestellt werden (z.B. /sitemap.xml, /llms.txt, /llms-full.txt). Jede Datei hat einen eindeutigen Pfad, einen rohen Textinhalt und einen MIME-Content-Type, der aus der Dateiendung abgeleitet wird.

web_file_list

Listet alle Web-Dateien auf.

Keine Parameter erforderlich.

web_file_get

Lädt eine einzelne Web-Datei anhand des Pfads.

path
string required
Der Pfad der Datei (z.B. "sitemap.xml").

web_file_create

Erstellt eine neue Web-Datei, die unter /<path> erreichbar ist.

path
string required
Der Pfad, unter dem die Datei bereitgestellt wird (z.B. "sitemap.xml", "blog/llms.txt"). Schrägstriche sind erlaubt, um Dateien zu verschachteln. Muss eindeutig sein.
content
string required
Der rohe Textinhalt der Datei.

web_file_update

Aktualisiert den Inhalt einer bestehenden Web-Datei anhand des Pfads.

path
string required
Der Pfad der zu aktualisierenden Datei.
content
string required
Neuer Inhalt der Datei.

web_file_delete

Löscht eine Web-Datei anhand des Pfads.

path
string required
Der Pfad der zu löschenden Datei.

Einstellungen

settings_get

CMS-Einstellungen mit aufgelösten Seitenreferenzen und Meta-Tags laden. Die Antwort liefert außerdem die öffentlichen URLs der Live-Instanz, damit ein Agent die von ihm erstellte Website per Screenshot prüfen kann:

  • publicBaseUrl — der Host, unter dem die Website ausgeliefert wird (z.B. https://yannik.free.neleto.io).
  • imageBaseUrl — das Präfix, unter dem hochgeladene Dateien ausgeliefert werden (z.B. …/image/user-upload).
  • adminUrl — die Editor-URL.
language
string
Sprachkontext für aufgelöste Seitenreferenzen.

settings_update

CMS-Einstellungen aktualisieren. Alle Felder sind optional - nur angegebene Felder werden geändert.

title
string
Website-Titel.
robots
string
Inhalt der robots.txt.
fallbackPageId
integer | null
Seite für unbekannte Routen (404-Fallback).
blogPostPageId
integer | null
Seite zur Darstellung einzelner Blogbeiträge.
eventPostPageId
integer | null
Seite zur Darstellung von Event-Detailseiten.
faviconId
string | null
UUID der Favicon-Datei.
fileDefaultStatus
"draft" | "public"
Standardstatus für neu hochgeladene Dateien.
postDefaultStatus
"draft" | "public"
Standardstatus für neu erstellte Blogbeiträge.
pageDefaultStatus
"draft" | "public"
Standardstatus für neu erstellte Seiten.
eventDefaultStatus
"draft" | "public"
Standardstatus für neu erstellte Events.
metaTags
object[]
Globale Meta-Tags für alle Seiten.
emailHost
string
SMTP-Host.
emailPort
integer
SMTP-Port.
emailUser
string
SMTP-Benutzername.
emailPassword
string
SMTP-Passwort.
emailFrom
string
Absenderadresse für ausgehende E-Mails.
emailTls
"tls" | "start-tls" | "none"
TLS-Modus für die SMTP-Verbindung.
defaultLanguage
string
Standardsprache der Website.
languages
object[]
Verfügbare Sprachen der Website. Jeder Eintrag benötigt value (z.B. "de") und label (z.B. "Deutsch").
autoDetectBestLanguage
boolean
Besucher automatisch zur bevorzugten Sprache weiterleiten.
maxUploadFileSizeMb
integer
Maximale Dateigröße beim Upload in Megabyte.
tailwindConfig
string
Globale Tailwind CSS Konfiguration.