-
Notifications
You must be signed in to change notification settings - Fork 0
Agenten Auskunft
Eine ConvoyPlan-Instanz liefert unter ihrer eigenen Domain aus, was sie ist und wie man sie programmatisch anspricht. Das ist kein Marketing-Anhängsel: ein Sprachmodell, das nach einer Konvoiplanung gefragt wird, und ein Agent, der auf einer Instanz landet, brauchen beide dieselbe Auskunft, und beide lesen sie lieber als Text als aus einer Single-Page-App, die erst Javascript starten muss.
Alles hier beschreibt die Software, nicht ihren Inhalt. Es gibt keinen Pfad in
dieser Liste, der Daten einer Organisation zeigt. Wer trotzdem nichts über die Instanz
verraten will, schaltet sie mit AGENT_DISCOVERY=false ab — siehe unten.
Alle Pfade sind relativ zur Adresse der Instanz (https://<DOMAIN>/…).
| Pfad | Inhalt |
|---|---|
/llms.txt |
Der Navigationsindex. Beginnt mit dem, was ConvoyPlan ist, und sagt dann ausdrücklich, wann ein Agent ConvoyPlan aufrufen soll und wann nicht |
/llms-full.txt |
Dieselbe Auskunft als Langfassung, alle Dokumente hintereinander |
/agents.md |
Kurzanleitung für KI-Agenten: Fähigkeiten, nötige Scopes, Regeln |
/auth.md |
Wie ein Agent an Zugangsdaten kommt, nach der auth.md-Spezifikation gegliedert |
/api.md |
Die REST-Oberfläche in Prosa: Endpunkte, Fehlercodes, Grenzen |
/openapi.json |
OpenAPI 3.1 der anmeldefreien Endpunkte plus der Sicherheitsschemata |
/ask |
Fragen über ConvoyPlan, beantwortet mit passenden Seiten (NLWeb, GET und POST, auf Wunsch als SSE-Stream) |
Abschnittsweise gibt es zusätzlich /api/llms.txt, /docs/llms.txt und
/developers/llms.txt — für einen Agenten, der nur einen Teilbereich braucht.
| Pfad | Standard |
|---|---|
/.well-known/agent-card.json |
A2A Agent Card |
/.well-known/agent-skills/index.json |
Agent-Skills-Index |
/.well-known/ard.json |
Agentic Resource Discovery |
/.well-known/mcp/server-card.json |
Kurzbeschreibung des MCP-Servers |
/.well-known/api-catalog |
API-Katalog nach RFC 9727 |
/.well-known/oauth-protected-resource |
RFC 9728 für die REST-API |
/.well-known/oauth-protected-resource/mcp |
RFC 9728 für den MCP-Server — nur bei eingeschalteter KI-Schnittstelle |
/about, /pricing, /developers, /docs, /contact und /privacy beschreiben das
Produkt, den Betrieb, die Lizenzmodelle und die Schnittstellen. Sie stehen hinter keiner
Anmeldung, weil sie genau denen etwas sagen sollen, die noch keine haben.
Dazu kommen /robots.txt (mit Sitemap:- und Schemamap:-Verweis und einer
ausdrücklichen Erlaubnis für die großen KI-Crawler), /sitemap.xml, /schema-map.xml
und die Feeds unter /feeds/.
Jede Seite hat eine Markdown-Fassung, und beide entstehen aus derselben Quelle
(frontend/src/lib/server/agent/documents.ts). Sie können deshalb nicht auseinanderlaufen.
Drei Wege führen dorthin:
curl https://<DOMAIN>/about.md # direkt
curl -H 'Accept: text/markdown' https://<DOMAIN>/about # ausgehandelt
curl https://<DOMAIN>/about?mode=agent # maschinenlesbare ÜbersichtDie HTML-Fassung kündigt die Markdown-Fassung über
<link rel="alternate" type="text/markdown"> und über einen Link-Kopf (RFC 8288) an,
der außerdem auf Sitemap, llms.txt, OpenAPI und den API-Katalog zeigt.
Nicht nach User-Agent unterschieden: ein Crawler bekommt dieselbe Seite wie ein Mensch. Unterschiedliche Inhalte je nach Kennung wären Cloaking, und seit die Seiten ihren Inhalt serverseitig ausliefern, hätte ein Bot davon auch nichts.
Ein Pfad, den es nicht gibt, antwortet mit 404 — auf Wunsch als Markdown mit
Wegweiser statt als leere App-Hülle.
Die Dokumente werden je Anfrage aus der tatsächlichen Lage der Instanz gebaut:
unter welcher Domain sie läuft, ob der MCP-Server montiert ist, ob ein Demo-Zugang
freigeschaltet ist. Grundlage ist GET /api/status/capabilities (ohne Anmeldung
abfragbar).
Das ist der Grund für den Aufwand: eine Instanz unter feuerwehr.example darf nicht auf
convoyplan.de verweisen, und ein server-card.json, das einen MCP-Endpunkt ankündigt,
den der Betreiber abgeschaltet hat, wäre schlechter als gar keines. Ist die
KI-Schnittstelle aus, sagen die Dokumente das — und nennen den REST-Weg.
/openapi.json ist nicht die vollständige Beschreibung. Die bleibt in Produktion
abgeschaltet und wird per DOCS_API_KEY geschützt (siehe
API-Dokumentation). Veröffentlicht wird eine kuratierte Teilmenge:
- nur Endpunkte, die ohnehin ohne Anmeldung erreichbar sind,
- dazu die Sicherheitsschemata (
bearerAuth,apiKeyAuth,oauth2), damit ein Agent erfährt, wie er an ein Token kommt, - mit eigenen Beschreibungen statt der Docstrings aus dem Quelltext, und
- nur mit den Schemata, die diese Endpunkte wirklich brauchen.
Struktur (Parameter, Antwortschemata) kommt aus der laufenden App und kann deshalb nicht
veralten; die Liste der öffentlichen Operationen steht ausdrücklich in
backend/app/api/routes/public_meta.py und wird von tests/test_public_openapi.py in
beide Richtungen geprüft.
Die Startseite meldet vier lesende Werkzeuge an, wenn der Browser das Modell kennt: Produktauskunft, Seitenverzeichnis, Instanzstatus und die Prüfung eines Organisations-Codes. Schreibende Werkzeuge gibt es dort bewusst nicht — dafür ist der MCP-Server da, mit ausdrücklicher Zustimmung und Audit-Log.
AGENT_DISCOVERY=falseDanach gibt es keinen der oben genannten Pfade mehr (404), und die Startseite zeigt
wieder nur die Anmeldung. Der Rest der Anwendung ist davon unberührt. Standard ist true.
Ein Teil dessen, was KI-Suchen über ein Produkt finden, entsteht außerhalb der Software:
ein Wikidata-Eintrag, Presseerwähnungen, Einträge in App-Verzeichnissen, veröffentlichte
SDK-Pakete. Ebenso entscheidet ein vorgelagertes CDN oder eine WAF darüber, ob ein
KI-Crawler die Instanz überhaupt erreicht — die robots.txt erlaubt es, die Firewall
kann es trotzdem verhindern.
Start
Einrichtung & Referenz
- Installation und Setup
- API-Dokumentation
- MCP-Server (KI-Schnittstelle)
- ConvoyPlan in ChatGPT verbinden
- Auskunft für Agenten
- Benutzerhandbuch
- Entwicklung
Bedienung
- Erste Schritte
- Konvoi-Planung
- Fahrzeuge
- Live-Tracking
- Marschbefehl & Export
- Rollen & Berechtigungen
- Teilen
- Fehler melden & Wünsche
Betrieb & Sicherheit