Vorverarbeitung: HTTP, Funktionen und MCP
Workflows über AuxData hinaus: externe Systeme abfragen, Code ausführen und Tools anbinden. Wir bauen eine automatische E-Mail-Kategorisierung.
Was du in diesem Tutorial baust
Workflow-Schritte können Vor- und Nachverarbeitung nutzen: einen HTTP-Service, eine Funktion (JavaScript/ScriptEngine) oder ein MCP-Tool. Als Demo bauen wir die E-Mail-Kategorisierung: eine Funktion holt E-Mails über MS Graph, ein Service kategorisiert sie, ein Intervall-Service automatisiert das Ganze. Mit Code-Blöcken als belastbare Muster, nicht als ungeprüfte Copy-Paste-Snippets.
Voraussetzung: C4. Die Mechanismen selbst vertiefen Track E (E3 MCP, E4 Funktionen). Primärquelle für die ScriptEngine ist das Programmierhandbuch; C5 zeigt die Nutzung im Workflow.
Quellen und Stand
Geprüft gegen das AuxData-Administrator-Handbuch (Stand Juni 2026), Kapitel 7 (HTTP-Services, Funktionen, MCP), das Programmierhandbuch (ScriptEngine) und das Schritt-Tutorial 19 (E-Mail-Kategorisierung).
Drei Wege nach außen
Wenn der Workflow externe Systeme braucht.
1Die drei Mechanismen
Ein Workflow-Schritt kann Vor- und Nachverarbeitung nutzen, um externe Systeme einzubinden. (AH 7)
- HTTP-Service
- ein vordefinierter REST-Aufruf (z. B. CRM- oder Preis-API).
- Funktion
- ein JavaScript-Skript (ScriptEngine) mit Modulen für HTTP, SQL, Mail, MS Graph, Wissensdatenbank …
- MCP-Server
- eine angebundene externe Tool-Sammlung; AuxData ist MCP-Client.
Alle drei werden auf Organisationsebene gepflegt (Org-Admin oder höher) und stehen damit den Agenten der Organisation als Bausteine zur Verfügung. Die konkrete Nutzung passiert im Workflow-Schritt oder über aktivierten Tool-Use. (AH 7.4)
✓ Das hast du jetzt erledigt
HTTP-Service bauen
Ein REST-Aufruf als Baustein.
1Reiter „Anfrage"
URL, Methode, Header und ein Request-Body mit Platzhaltern ${parameter}. (AH 7.1)

access_token) und setzt per Default Authorization: Bearer <token> — solange dein Haupt-Request den Platzhalter nicht selbst verwendet. So bindest du OAuth2 / Microsoft Graph an, ohne ein Secret fest einzutragen. (AH 7.1)value bei MS Graph) bündelt die Treffer. (AH 7.1)🧠 Für Profis: Auth-Token automatisch holen — Bearer-Default & kein Caching
${token-variable} nirgends, ergänzt die Plattform automatisch Authorization: Bearer <token>. Sobald du den Platzhalter selbst einsetzt oder bereits einen Authorization-Header hast, entfällt der Auto-Header. Kein Caching: Jeder Aufruf löst genau einen Token-Fetch aus; bei paginierten Services wird das Token einmal vor der Seiten-Schleife geholt und wiederverwendet — bei hochfrequenten Aufrufen das Rate-Limit des Token-Endpunkts beachten. (AH, HTTP-Service)2Umgebungsvariablen & Test
Secrets (API-Keys, Tokens) liegen im separaten Schlüssel-Wert-Speicher und werden in HTTP-/MCP-Templates über ${env.NAME} eingesetzt. Die Vertraulich-Markierung maskiert solche Werte nur in der Tabelle — gespeichert werden sie im Klartext (in der Datenbank; über die REST-API und die Browser-DevTools für Aufrufende einsehbar). Für hochkritische Geheimnisse gehört daher ein separater Secret-Manager davor. Die Testseite führt einen Probe-Aufruf aus und zeigt Request, Response und Status. (AH 7.1; Programmierhandbuch · Vertrauliche Werte)
${env.NAME}. In ScriptEngine-Funktionen stehen Umgebungsvariablen als globale Namen bereit, z. B. api_token oder db_password. (AH 7.1; PH)✓ Das hast du jetzt erledigt
Funktion (ScriptEngine)
Eigener Code in der Sandbox.
1JavaScript in der Sandbox
Funktionen sind JavaScript (ECMAScript 5.1) und laufen über Otto in einer Sandbox — ohne Datei- oder Netzwerkzugriff außerhalb der eingebauten Module. (AH 7.2; Programmierhandbuch)
function preisAbfrage(produkt) {
getModule("http");
getModule("log");
if (!produkt) {
log_error("Produkt fehlt");
return "FEHLER: Produkt fehlt";
}
try {
var header = new Object();
header["Authorization"] = "Bearer " + api_token; // Umgebungsvariable
var url = "https://api.example.com/preis?produkt=" + http_queryEscape(produkt);
log_info("Preisabfrage gestartet");
return http_get(url, header);
} catch (error) {
log_error("Preisabfrage fehlgeschlagen: " + error);
return "FEHLER: Preisabfrage fehlgeschlagen";
}
}
2Eingebaute Module
- http
http_get,http_post,http_put,http_delete,http_queryEscape.- graphapi
- MS Graph: Ressourcen abrufen, E-Mails senden, neue E-Mails holen, verschieben, löschen.
- aiservice
- andere AI-Services synchron/asynchron aufrufen, z. B.
aiservice_run. - knowledgedb
- Text/Binary speichern und per
find/findByKeywordsuchen. - sql
sql_execute,sql_query— direkter Datenbankzugriff nur für Admins.- log
log_info,log_warn,log_error,log_debug.
✓ Das hast du jetzt erledigt
Funktion im Workflow
E-Mails holen und kategorisieren lassen.
1Die Funktion als Vorverarbeitung
Sie holt neue E-Mails über MS Graph und lässt sie von einem AI-Service einstufen. Das Beispiel ist ein verdichtetes Muster: Graph-Konfiguration, IDs, Rechte und Ordnernamen müssen gegen deine Instanz und das Programmierhandbuch geprüft werden. (Tut 19 S3; PH graphapi/aiservice)
function emailCategorization(agentId, categorizationServiceId, maxEmails) {
getModule("graphapi");
getModule("aiservice");
getModule("log");
if (!agentId || !categorizationServiceId) {
log_error("agentId oder serviceId fehlt");
return "FEHLER: Konfiguration unvollständig";
}
var graphConfig = new Object(); // aus Funktions-/Org-Umgebungsvariablen befüllen
var mails = graphapi_getNewFromInbox(graphConfig, maxEmails || 10);
var verarbeitet = 0;
for (var i = 0; i < mails.length; i++) {
var params = new Object();
params["subject"] = mails[i].Subject || mails[i].subject;
params["content"] = mails[i].Body || mails[i].body;
var result = aiservice_run(agentId, categorizationServiceId, params);
if (result && result.MultiResults && result.MultiResults.Results.length > 0) {
log_info("Kategorie: " + result.MultiResults.Results[0].Result);
verarbeitet++;
}
}
return "Verarbeitete E-Mails: " + verarbeitet;
}
aiservice_run(...) ruft einen anderen AI-Service auf — Funktionen und Services greifen ineinander. Den Kategorisierungs-Service hast du wie in C3 als Schablone definiert. (Tut 19)getModule: Läuft die Funktion als Workflow-Schritt, stellt die Plattform die Ergebnisse aller vorherigen Schritte als globale Variable aiserviceresults bereit (Array<string>, chronologisch; außerhalb eines Workflows null). (Programmierhandbuch)✓ Das hast du jetzt erledigt
MCP-Tool einbinden
Externe Werkzeuge als Client nutzen.
1AuxData als MCP-Client
MCP (Model Context Protocol) gibt LLMs Zugriff auf standardisierte Tools, Prompts und Resources. AuxData ist MCP-Client. (AH 7.3)

2Nutzung
Ein konfigurierter MCP-Server ist im Workflow-Schritt unter Vor-/Nachverarbeitung als Tool wählbar. Alternativ nutzen Tool-Use-fähige Modelle die Tools autonom, wenn der Admin das aktiviert. Die „CRM MCP" ist hier bewusst Demo, nicht Quelle für einen echten Endpunkt. (AH 7.3)
customer_lookup und ticket_create nutzen?✓ Das hast du jetzt erledigt
E-Mail-Kategorisierung zusammenbauen
Vom Postfach bis zur Teams-Meldung.
1Der automatisierte Ablauf
2Kategorien & Ordner
Ein Kategorisierungs-Service ordnet jede E-Mail einer Kategorie zu (Dringend, Wichtig, Projekt, HR, IT, Vertrieb, Finanzen, Allgemein) und bestimmt die Priorität. Eine Zuordnung steuert das Verschieben: (Tut 19 S4–5)
var folderMapping = {
"Dringend": "Inbox/Dringend",
"Wichtig": "Inbox/Wichtig",
"IT": "Inbox/IT-Support",
"Allgemein": "Inbox/Allgemein"
};
// Als Intervall-Service alle checkInterval Sekunden ausführen
Wichtige Treffer melden wir zusätzlich in einen Teams-Kanal; der Intervall-Service stößt den Ablauf alle checkInterval Sekunden an. Organisations-Intervallpläne zeigen Plan-ID, Anwender, Agent, Service, nächste Ausführung, Intervall und Aktiv-Status. (Admin-HB · Monitoring; Tut 19 S6–8)
✓ Das hast du jetzt erledigt
Sicherheit & Best Practices
Damit die Brücke nach außen sicher bleibt.
1Sicherheitsgrenzen
- URL-Whitelist
- HTTP- und MCP-Aufrufe nur an freigegebene Ziele.
- MCP nur HTTPS
- valides Zertifikat und 15-Sekunden-Timeout pro Tool-Aufruf.
- SQL nur Admins
- direkter Datenbankzugriff ist eingeschränkt.
- Otto-Sandbox
- kein Datei-/Netz-IO außerhalb der Module.
2Best Practices
${env.NAME}; ScriptEngine: direkte globale Variable wie api_token. Versionsgebunden arbeiten (ändert sich eine Fremd-API, neuen Service anlegen). In Funktionen konsequent loggen, Eingaben validieren und Fehlerpfade behandeln — aber niemals Passwörter oder Tokens loggen. (AH 7.5; PH)Automatisierung steht!
Die E-Mail-Kategorisierung läuft als Intervall-Service, HTTP- und MCP-Anbindung sind eingerichtet — und das alles sicher. Mach das Quiz und geh dann weiter zu C6 — Feedback nutzen und Services verbessern.
✓ Das hast du jetzt erledigt
Sitzt die Vorverarbeitung?
7 Szenariofragen aus den Stufen 1–7. Kein Zertifikat — zur Selbstkontrolle. Beliebig oft wiederholbar.